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

Çağıran işlev ile çağrılan işlevin her ikisi de aynı amaç kod (object code) içinde bulunmak<br />

zorunda değildir. Çağıran işlev ile çağrılan işlev farklı amaç kodlar içinde bulunabilir.<br />

Çünkü derleme işlemi sırasında bir işlevin çağrıldığını gören derleyici, amaç kod içine<br />

çağrılan işlevin adını ve çağrı biçimini yazar. Çağıran işlev ile çağrılan işlev arasında<br />

bağlantı kurma işlemi, bağlama aşamasında bağlayıcı program (linker) tarafından yapılır.<br />

Bu nedenle tanımlanan bir işlev içinde, tanımlı olmayan bir işlev çağrılsa bile derleme<br />

aşamasında bir hata oluşmaz. Hata bağlama aşamasında oluşur. Çünkü bağlayıcı çağrılan<br />

işlevi bulamaz.<br />

İşlev Parametre Değişkenlerinin Tanımlanması<br />

İşlevler çağrıldıkları yerlerden alacakları bilgileri, işlev çağrı ifadeleri ile alırlar. Bir işlevin<br />

formal parametreleri (formal parameters) ya da parametre değişkenleri, işlevlerin<br />

kendilerini çağıran işlevlerden aldıkları girdileri tutan değişkenleridir. Bir işlevin parametre<br />

sayısı ve bu parametrelerin türleri gibi bilgiler, işlevlerin tanımlanması sırasında<br />

derleyiciye bildirilir. İşlev çağrısı ile gönderilen argüman ifadelerin değerleri, işlevin ilgili<br />

parametre değişkenlerine kopyalanır.<br />

Örneğin bir küpün hacmini hesaplayan işlev, çağrıldığı yerden bir küpün kenar<br />

uzunluğunu alacağına göre, bu değerin kopyalanması için, bir parametre değişkenine<br />

sahip olması gerekir. Benzer şekilde iki sayıdan daha büyük olanını bulan bir işlevin iki<br />

tane parametre değişkenine sahip olması gerekir.<br />

C dilinde işlevlerin tanımlanmasında kullanılan iki temel biçim vardır. Bu biçimler<br />

birbirlerinden işlev parametrelerinin derleyicilere tanıtılma şekli ile ayrılırlar. Bu<br />

biçimlerden birincisi eski biçim (old style) ikincisi ise yeni biçim (new style) olarak<br />

adlandırılır.<br />

Eski biçim hemen hemen hiç kullanılmaz, ama C standartlarına göre halen geçerlidir. Bu<br />

biçimin korunmasının nedeni geçmişe doğru uyumluluğun sağlanmasıdır. Kullanılması<br />

gereken kesinlikle yeni biçimdir. Ancak eski kodların ya da eski kaynak <strong>kitap</strong>ların<br />

incelenmesi durumunda bunların anlaşılabilmesi için eski biçimin de öğrenilmesi gerekir.<br />

Eski Biçim<br />

Eski biçimde (old style), işlevin parametre değişkenlerinin yalnızca isimleri, işlev<br />

parametre ayraçları içinde yazılır. Eğer parametre değişkenleri birden fazla ise aralarına<br />

virgül atomu koyulur. Daha sonra bu değişkenlerin bildirimi yapılır. Bu bildirimler daha<br />

önce öğrendiğimiz, C dilinin bildirim kurallarına uygun olarak yapılır. Örnek:<br />

double alan(x, y)<br />

double x, y;<br />

{<br />

return x * y;<br />

}<br />

Yukarıda tanımlanan alan işlevinin iki parametre değişkeni vardır ve bu parametre<br />

değişkenlerinin isimleri x ve y'dir. Her iki parametre değişkeni de double türdendir.<br />

İşlevin geri dönüş değeri double türdendir.<br />

int func (a, b, c)<br />

int a;<br />

double b;<br />

long c;<br />

{<br />

/***/<br />

}<br />

Bu örnekte ise func işlevi üç parametre değişkenine sahiptir. Parametre değişkenlerinin<br />

isimleri a, b ve c'dir. İsmi a olan parametre değişkeni int türden, b olanı double türden ve<br />

ismi c olanı ise long türdendir.<br />

59/529

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

Saved successfully!

Ooh no, something went wrong!