SORU
13 AĞUSTOS 2008, ÇARŞAMBA


Nasıl C parametre olarak bir işlev geçer misiniz?

Bir işlev parametresi tarafından iletilen veri kümesi üzerinde gerçekleştiren bir fonksiyon oluşturmak istiyorum. Nasıl C parametre olarak bir işlev geçer misiniz?

CEVAP
13 AĞUSTOS 2008, ÇARŞAMBA


Beyannamesi

Fonksiyon bir parametre alan bir fonksiyon prototipi aşağıdaki gibidir:

void func ( void (*f)(int) );

Bu parametre f void dönüş türü olan ve int Tek bir parametre alan bir işlev işaretçisi bir ülke olacak. Aşağıdaki fonksiyon (print) uygun bir tür olduğu için bir parametre olarak func için zararlı olabilecek bir işlevi bir örnektir:

void print ( int x ) {
  cout << x << endl;
}

İşlev Çağrısı

İşlev parametresi olan bir fonksiyon çağrılırken, değeri geçmiş bir işlev için bir işaretçi olmalıdır. Bu işlevin adı (parantez olmadan) kullanın:

func(print);

func baskı geçirmeden işlevini çağırın.

İşlevi Vücudun

Herhangi bir parametre olduğu gibi, işlev şimdi fonksiyonun parametre adı parametre değeri erişmek için kullanabilirsiniz. Hadi bu işlev numaraları 0-4 geçirilmeden işlevi geçerli olacak demek. Döngü görüneceğini, ilk düşünün, baskı doğrudan çağırmak gibi

for ( int ctr = 0 ; ctr < 5 ; ctr   ) {
  print(ctr);
}

Beri func's parametresi bildirimi diyor f adı için bir işaretçi istenen fonksiyon, hatırladığımız ilk o f işaretçi *f şey f puan (yani fonksiyonu print bu durumda). Sonuç olarak, yukarıda *f ile: döngü baskı her geçtiği yerde değiştirmek

void func ( void (*f)(int) ) {
  for ( int ctr = 0 ; ctr < 5 ; ctr   ) {
    (*f)(ctr);
  }
}

http://math.hws.edu/bridgeman/courses/331/f05/handouts/c-c -notes.html

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Kai Moosmann

    Kai Moosmann

    5 Temmuz 2006
  • Living Waters

    Living Water

    9 AĞUSTOS 2006
  • Tahir Jahi

    Tahir Jahi

    6 Mart 2006