CodeBlanks Logo Icon CodeBlanks

typedef ve fonksiyon işaretçisi

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

typedef ile fonksiyon işaretçisi türü öğrenirsin.

typedef ve fonksiyon işaretçisi

Fonksiyon işaretçisi sözdizimi uzundur ve okunması zordur. typedef ile kısa ve anlamlı bir ad vererek bu sorunu çözersin.

Örnek: typedef int (*BinOp)(int, int);. Bu, iki int alıp int döndüren fonksiyon işaretçisine BinOp adını verir. Bundan sonra BinOp op = add; yazabilirsin; int (*op)(int, int) = add; yazmaktan çok daha okunaklıdır. typedef fonksiyon işaretçisi ile birlikte, dispatch table ve callback gibi desenleri temiz biçimde ifade etmenin standart yoludur. Tür adı amacı yansıtır; kod kendini belgeler.

BinOp kullanımı

BinOp türünü tanımladıktan sonra, uyumlu imzaya sahip herhangi bir fonksiyonu atayabilirsin. Çağrı doğrudan op(a, b) biçiminde yapılır.

Örnek: int add(int a, int b) { return a + b; } tanımla. Sonra BinOp op = add; ile işaretçiye ata. printf("%d\n", op(3, 4)); ile çağır; sonuç 7 olur. İşaretçi, fonksiyonun adresini tutar; çağrı doğrudan yapılır. Bu, çalışma anında hangi fonksiyonun çağrılacağını seçmenin temiz yoludur. Aynı BinOp türü toplama, çıkarma, çarpma gibi her işlemi temsil edebilir.

Uygulama typedef fp programı yaz

typedef int (*BinOp)(int, int); tanımla. int add(int a, int b) fonksiyonunu yaz; a + b döndürsün. main içinde BinOp op = add; ata. printf("%d\n", op(3, 4)); ile çağır.

Başlangıç kodu

main.c
#include <stdio.h>

// BinOp türünü typedef ile tanımla
// add fonksiyonunu yaz
// main'de op işaretçisine add ata ve çağır

int main(void) {
    return 0;
}

Örnek çözüm

main.c
#include <stdio.h>

typedef int (*BinOp)(int, int);

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

int main(void) {
    BinOp op = add;
    printf("%d\n", op(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 typedef fp parçalarını eşle

Kavram Anlamı
typedef Ad verme
(*BinOp) İşaretçi adı
(int, int) Parametre listesi
int Dönüş türü

2 BinOp op = add; ataması ne zaman geçerlidir?

  • add iki int alıp int döndürdüğünde Doğru cevap
  • add parametre aldığında
  • add main içinde tanımlandığında
  • add static olarak tanımlandığında

Açıklama: BinOp türü iki int alıp int döndürür; add de bu imzaya uymalıdır.

3 BinOp atamasını tamamla

Soru
BinOp op = ____;
Cevap
BinOp op = add;

Açıklama: BinOp op = add; ile fonksiyon işaretçisine add atanır.

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