CodeBlanks Logo Icon CodeBlanks

Fonksiyon işaretçisi tanımı

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

Fonksiyon işaretçisi sözdizimini ve türünü öğrenirsin.

Fonksiyon işaretçisi türü

Bir fonksiyon işaretçisi, bir fonksiyonun adresini tutan değişkendir. Bildirim, dönüş türü, parantez içinde yıldız ve isim, ardından parametre listesinden oluşur.

Örnek: int (*fp)(int, int) = add;. Burada fp, iki int alıp int döndüren fonksiyona işaretçidir. Parantezler önemlidir: int *fp(int, int) yazarsan bu, int * döndüren bir fonksiyon bildirimi olur. İşaretçi olduğunu parantezle belirtmek şarttır. Tür, dönüş ve parametreler tam olarak fonksiyonun imzasıyla uyuşmalıdır.

Tür uyumu

Fonksiyon işaretçisine atama yaparken dönüş türü ve parametre listesi birebir uyuşmalıdır. Aksi halde derleyici uyarı verir, davranış tanımsız olur.

Örnek: int add(int, int); fonksiyonu için int (*fp)(int, int) = add; yazılır. Ama int (*fp)(int) = add; yazarsan parametre sayısı uyuşmaz. Aynı şekilde double (*fp)(int, int) = add; dönüş türü uyuşmaz. İşaretçi türü, fonksiyonun imzasını bir kontrat gibi taşır; bu yüzden uzun yazılır ama güvenlidir.

Uygulama Fonksiyon işaretçisi tanımla

int add(int a, int b) fonksiyonunu yaz; a + b döndürsün. int (*fp)(int, int) = add; ile işaretçi tanımla ve add'e ata. printf("%d\n", fp(3, 4)); ile çağrının sonucunu yazdır.

Başlangıç kodu

main.c
#include <stdio.h>

// add fonksiyonunu yaz
// fp fonksiyon işaretçisini tanımla
// fp'yi çağır ve yazdır

int main(void) {
    return 0;
}

Örnek çözüm

main.c
#include <stdio.h>

int add(int a, int b) {
    return a + b;
}

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

Beklenen çıktı

7

Soru ve cevaplar

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

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

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

Açıklama: Parantezler fp'yi işaretçi yapar; int *fp(int, int) fonksiyon bildirimidir.

2 İki parametreli fonksiyon işaretçisi

Soru
int (____)(int, int) = add;
Cevap
int (*fp)(int, int) = add;

Açıklama: *fp parantez içinde işaretçi değişkeni oluşturur.

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

Kavram Anlamı
int Dönüş türü
(*fp) İşaretçi değişkeni
(int, int) Parametre listesi
= add Atama

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