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
#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
#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
int (____)(int, int) = add;
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 |