08.11.2014 Views

c_kitap

c_kitap

c_kitap

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

C ve Sistem Programcıları Derneği - C Ders Notları - Necati Ergin<br />

void(*)(void)<br />

türüdür. Bu göstericinin gösterdiği işlev<br />

fparray[2]();<br />

biçiminde ya da<br />

(*fparray[2])() ;<br />

biçiminde çağrılabilir. Böyle bir dizinin elemanlarına da ilkdeğer verilebilir:<br />

void (*fparray[5])(void) = {f1, f2, f3, f4, f5};<br />

Böylece, dizinin her bir elemanının bir işlevi göstermesi sağlanabilir.<br />

Artık bir döngü deyimi yardımıyla gösterici dizisinin elemanlarına ulaşılarak dizinin<br />

elemanlarının gösterdiği işlevler çağrılabilir. Aşağıdaki kodu derleyerek çalıştırın:<br />

#include <br />

void f1() {printf("f1()\n");}<br />

void f2() {printf("f2()\n");}<br />

void f3() {printf("f3()\n");}<br />

void f4() {printf("f4()\n");}<br />

void f5() {printf("f5()\n");}<br />

int main()<br />

{<br />

void (*fparray[5])(void) = {f1, f2, f3, f4, f5};<br />

int k;<br />

for (k = 0; k < 5; ++k)<br />

fparray[k]();<br />

}<br />

return 0;<br />

Bir İşlevin Bir İşlev Adresini Geri Döndürmesi<br />

Bir işlevin geri dönüş değeri de bir işlev adresi olabilir. Aşağıdaki örneği inceleyin:<br />

#include <br />

void foo()<br />

{<br />

printf("foo()\n");<br />

}<br />

void (*func(void))(void)<br />

{<br />

void (*fp)(void) = foo;<br />

}<br />

return fp;<br />

int main()<br />

{<br />

func()();<br />

return 0;<br />

}<br />

516

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!