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

  • edwin maldonado

    edwin maldon

    28 Mart 2009
  • Friday NightFort

    Friday Night

    15 EYLÜL 2011
  • the one am radio

    the one am r

    6 Mayıs 2006