08.11.2014 Views

c_kitap

c_kitap

c_kitap

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

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

Yukarıda tanımlanan fptr isimli gösterici değişkene geri dönüş değeri int türden olan,<br />

parametreleri (int, int) olan bir işlevin adresi atanabilir.<br />

Tanımlamada gösterici değişkenin ismi eğer ayraç içine alınmazsa, bir işlev göstericisi<br />

tanımlanmış olmaz. Bir adres türüne geri dönen bir işlev bildirilmiş olur:<br />

int *f(int, int);<br />

Yukarıda, ismi f olan geri dönüş değeri (int *) türü olan parametreleri (int, int) olan bir<br />

işlev bildirilmiştir.<br />

İşlev İsimleri<br />

Bir dizi isminin, bir işleme sokulduğunda, otomatik olarak dizinin ilk elemanının adresine<br />

dönüştürüldüğünü biliyorsunuz. Benzer şekilde bir işlev ismi de, bir işleme sokulduğunda<br />

derleyici tarafından otomatik olarak ilgili işlevin adresine dönüştürülür. İşlev isimlerine,<br />

yazılımsal olarak işlevlerin adresleri gözüyle bakılabilir.<br />

Bir işlev ismi adres işlecinin de terimi olabilir. Bu durumda yine işlevin adresi elde edilir.<br />

Yani func bir işlev ismi olmak üzere<br />

func<br />

ile<br />

&func<br />

eşdeğer ifadeler olarak düşünülebilir. Her iki ifade de func işlevinin adresi olarak<br />

kullanılabilir.<br />

İşlev Çağrı İşleci<br />

işlev çağrı işleci tek terimli sonek konumunda bir işleçtir. İşleç öncelik tablosunun en üst<br />

düzeyindedir. Bu işleçin terimi bir işlev adresidir. İşleç, programın akışını o adrese<br />

yöneltir, yani o adresteki kodu çalıştırır. Örneğin:<br />

func()<br />

Burada işlev çağrı işlecinin terimi func adresidir. İşleç, func adresinde bulunan kodu, yani<br />

func işlevini çalıştırır. İşlev çağrı işlecinin ürettiği değer, çağrılan işlevin geri dönüş<br />

değeridir. Örneğin:<br />

a = add(10, 20);<br />

Burada add ifadesinin türü geri dönüş değeri int parametresi (int, int) olan bir işlev<br />

adresidir. Yani add ifadesinin<br />

int (*)(int, int)<br />

türüne dönüştürülür.<br />

add(10, 20)<br />

gibi bir işlev çağrısının oluşturduğu ifade ise int türdendir.<br />

İşlevlerin İşlev Göstericileri ile Çağrılması<br />

Bir işlev göstericisinin gösterdiği işlev iki ayrı biçimde çağrılabilir. pf bir işlev göstericisi<br />

değişken olmak üzere, bu göstericinin gösterdiği işlev<br />

pf()<br />

508

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

Saved successfully!

Ooh no, something went wrong!