SORU
8 Mayıs 2009, Cuma


Nasıl C işlev işaretçileri çalışır?

Son zamanlarda C. işlev işaretçileri sahip olmuştum

Kendi sorularınıza cevap geleneği devam yani, hızlı bir dalış konusu ihtiyacı olanlar için çok temel küçük bir özet yapmaya karar verdim.

CEVAP
8 Mayıs 2009, Cuma


C fonksiyonlar işaretçiler

Hadi olacak olan temel bir fonksiyon ile başlayalımişaret için:

int addInt(int n, int m) {
    return n m;
}

İlk iş, 2 ints ve döner alan bir işlev için bir işaretçi tanımlamak ve int sağlar:

int (*functionPtr)(int,int);

Şimdi güvenli bir şekilde bizim işlevine işaret edilebilir:

functionPtr = &addInt;

Bu işlev için bir işaretçi var şimdi, hadi kullanın:

int sum = (*functionPtr)(2, 3); // sum == 5

Başka bir işlev için bir işaretçi geçirmeden temelde aynıdır:

int add2to3(int (*functionPtr)(int, int)) {
    return (*functionPtr)(2, 3);
}

Dönüş değerleri fonksiyon işaretçiler de kullanabiliriz (devam et, işler sarpa sarar):

// this is a function called functionFactory which receives parameter n
// and returns a pointer to another function which receives two ints
// and it returns another int
int (*functionFactory(int n))(int, int) {
    printf("Got parameter %d", n);
    int (*functionPtr)(int,int) = &addInt;
    return functionPtr;
}

Ama çok daha güzel typedef kullanmak için:

typedef int (*myFuncDef)(int, int);
// note that the typedef name is indeed myFuncDef

myFuncDef functionFactory(int n) {
    printf("Got parameter %d", n);
    myFuncDef functionPtr = &addInt;
    return functionPtr;
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Matt Harding

    Matt Harding

    23 Mayıs 2006
  • metagamers

    metagamers

    13 Mayıs 2006
  • Michael Neal

    Michael Neal

    2 Mayıs 2009