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
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
C parametre olarak bir işlev geçirmek ...
Nasıl geçer @parametre olarak seçici?...
Nasıl parametre olarak gönderilen bir ...
Nasıl bir işlev adı için Python ile bi...
Nasıl javascript kullanarak dinamik ol...