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 />

2. get_val işlevinin iki parametre değişkeni vardır. Bu bilgilendirmeden sonra artık<br />

derleyici bu işlevin doğru sayıda argüman ile çağrılıp çağrılmadığını sorgulama şansına<br />

sahip olur. Eğer işlevin yanlış sayıda argüman ile çağrıldığını görürse, durumu bir hata<br />

iletisi ile bildirir.<br />

3. get_val işlevinin parametre değişkenleri double türdendir. Bu bilgiden sonra derleyici<br />

işleve başka türden argümanlar gönderilmesi durumunda, argümanlar üzerinde otomatik<br />

tür dönüşümü uygular. Bu konu "otomatik tür dönüşümü" isimli bölümde ele alınacak.<br />

Aşağıda örnek bildirimler veriliyor:<br />

int multiply (int, int);<br />

double power (double, double);<br />

void clrscr(void);<br />

Tıpkı işlev tanımlamalarında olduğu gibi, işlev bildirimlerinde de işlevin geri dönüş değeri<br />

belirtilmemişse, derleyici bildirimin int türden bir geri dönüş değeri için yapıldığını kabul<br />

eder:<br />

func(double);<br />

bildirimi ile<br />

int func(double);<br />

bildirimi tamamen eşdeğerdir. Ancak okunabilirlik açısından int anahtar sözcüğünün<br />

açıkça yazılması daha iyidir.<br />

[C++ dilinde geri dönüş değerinin türünün yazılması zorunludur.]<br />

Eğer bildirilen işlev, geri dönüş değeri üretmiyorsa, void anahtar sözcüğü kullanılmalıdır:<br />

void func(double);<br />

İşlev bildirimleri ile, yalnızca derleyiciye bilgi verilir. Bu bir tanımlama (definition) işlemi<br />

değildir. Dolayısıyla yapılan bildirim sonucunda derleyici programın çalışma zamanına<br />

yönelik olarak bellekte bir yer ayırmaz.<br />

Bildirimde Parametre Ayracının İçinin Boş Bırakılması<br />

C'nin standartlaştırma süreci öncesinde işlev bildirimlerinde,parametre ayracının içi boş<br />

bırakılıyordu. Bildirimde, işlevin parametre değişkenlerinin türleri ve sayısı hakkında bir<br />

bilgi verilmiyordu. Bildirimin tek amacı, bir işlevin geri dönüş değerinin türü hakkında<br />

bilgi vermekti. Dolayısıyla aşağıdaki gibi bir bildirim<br />

double func();<br />

func işlevin parametre değişkenine sahip olmadığı anlamına gelmiyordu. Standartlaştırma<br />

süreci içinde işlev bildirimlerine yapılan eklemeyle, işlevlerin parametre değişkenlerinin<br />

sayısı ve türleri hakkında da bilgi verilmesi olanağı verildi. Ancak bu durumda da ortaya<br />

şöyle bir sorun çıktı. Eski kurallara göre yazılan bir kod yeni kurallara göre derlendiğinde<br />

double func();<br />

gibi bir bildirim, işlevin parametre değişkenine sahip olmadığı biçiminde yorumlanırsa,<br />

bildirilen işlevin örneğin<br />

func(5)<br />

121/529

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

Saved successfully!

Ooh no, something went wrong!