CodeBlanks Logo Icon CodeBlanks

Fonksiyon işaretçisi

  • C kursu
  • Orta seviye
  • Ders 3/116
  • 5 dk

Fonksiyon işaretçisi tanımlamayı ve çağırmayı öğrenirsin.

Fonksiyon işaretçisi nedir?

Bir fonksiyon işaretçisi (function pointer), bir fonksiyonun adresini tutan değişkendir. C'de int (*fp)(int); yazımı, int döndüren ve bir int alan bir fonksiyona işaretçi bildirir.

Örnek: int square(int x) { return x * x; } ve int (*fp)(int) = square;. Burada fp, square'ün adresini tutar. Çağırmak için fp(5) veya (*fp)(5) yazılır; her ikisi de 25 döndürür. Fonksiyon işaretçisi, çağrılacak fonksiyonu çalışma anında seçmeyi sağlar.

Fonksiyon işaretçisini çağırma

Bir fonksiyon işaretçisini iki şekilde çağırabilirsin: fp(arg) veya (*fp)(arg). İkisi de geçerlidir ve aynı sonucu verir.

İlk yazım daha yaygındır; ikinciyi ise işaretçinin dolaylandığını açıkça göstermek için kullanırsın. Önemli olan, işaretçinin bildirimi ile fonksiyonun imzasının birebir uyuşmasıdır. Dönüş türü ve parametre listesi farklıysa davranış tanımsızdır. Bu yüzden fonksiyon işaretçisi türleri uzun olsa da tam yazılmalıdır.

Uygulama Fonksiyon işaretçisiyle kare al

int square(int x) adında bir fonksiyon yaz; x * x döndürsün. int (*fp)(int) türünde bir işaretçi tanımla ve square'e ata. fp(7) çağrısının sonucunu printf ile yazdır.

Başlangıç kodu

main.c
#include <stdio.h>

// square fonksiyonunu yaz
// fp işaretçisini tanımla ve square'ye ata
// fp çağrısının sonucunu yazdır

int main(void) {
    return 0;
}

Örnek çözüm

main.c
#include <stdio.h>

int square(int x) {
    return x * x;
}

int main(void) {
    int (*fp)(int) = square;
    printf("%d\n", fp(7));
    return 0;
}

Beklenen çıktı

49

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Hangisi int döndüren ve int alan fonksiyona işaretçidir?

  • int (*fp)(int);
  • int *fp(int); Doğru cevap
  • int fp*(int);
  • (int *)fp(int);

Açıklama: Int (*fp)(int); — parantezler fp'yi işaretçi yapar.

2 Fonksiyon işaretçisi bölümlerini eşle

Kavram Anlamı
int Dönüş türü
(*fp) İşaretçi değişkeni
(int) Parametre listesi
fp(5) Çağrı

3 Fonksiyon işaretçisini çağır

Soru
int square(int x) { return x * x; }
int (*fp)(int) = square;
int r = ____(5);
Cevap
int square(int x) { return x * x; }
int (*fp)(int) = square;
int r = fp(5);

Açıklama: fp doğrudan fonksiyon gibi çağrılabilir.

Orta seviye bölümündeki tüm dersler