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

Bazı programcılar return ifadesini bir ayraç içinde yazarlar. Bu ayraç return deyimine ek<br />

bir anlam katmaz. Yani<br />

return x * y;<br />

gibi bir deyim<br />

return (x * y);<br />

biçiminde de yazılabilir. Okunabilirlik açısından özellikle uzun return ifadelerinde ayraç<br />

kullanımı salık verilir.<br />

return (a * b - c * d);<br />

Bir işlevin tanımında işlevin geri dönüş değeri türü yazılmışsa, bu işlevin tanımı içinde<br />

return deyimiyle bir geri dönüş değeri üretilmelidir. Bu mantıksal bir gerekliliktir. Ancak<br />

return deyimiyle bir geri dönüş değeri üretilmemesi derleme zamanı hatasına neden<br />

olmaz. Bu durumda işlevin çalışması işlevin ana bloğunun sonuna gelindiğinde sona erer ,<br />

işlev çağrıldığı yere bir çöp değeri iletir. Bu da istenmeyen bir durumdur. C<br />

derleyicilerinin çoğu, geri dönüş değeri üreteceği yolunda bilgi verilen bir işlevin return<br />

deyimiyle bir değer üretmemesini mantıksal bir uyarı iletisiyle işaretler.<br />

"Warning: Function func should return a value"<br />

Geri dönüş değeri üretmeyen işlevlerde, yani void işlevlerde, return anahtar sözcüğü<br />

yanında bir ifade olmaksızın tek başına da kullanılabilir:<br />

return;<br />

Bu durumda return deyimi içinde yer aldığı işlevi, geri dönüş değeri oluşturmadan<br />

sonlandırır.<br />

C dilinde işlevler yalnızca tek bir geri dönüş değeri üretebilir. Bu da işlevlerin kendilerini<br />

çağıran işlevlere ancak bir tane değeri geri gönderebilmeleri anlamına gelir. Ancak,<br />

işlevlerin birden fazla değeri ya da bilgiyi kendilerini çağıran işlevlere iletmeleri<br />

gerekiyorsa, C dilinde bunu sağlayacak başka araçlar vardır. Bu araçları daha sonraki<br />

bölümlerde ayrıntılı olarak göreceksiniz.<br />

main İşlevi<br />

main de diğer işlevler gibi bir işlevdir, aynı tanımlama kurallarına uyar. C programlarının<br />

çalışması, ismi main olan işlevden başlar. C programları özel bir işlem yapılmamışsa,<br />

main işlevinin çalışmasının bitişiyle sonlanır. main işlevine sahip olmayan bir kaynak<br />

dosyanın derlenmesinde bir sorun çıkmaz. Ancak bağlama (linking) aşamasında bağlayıcı<br />

main işlevinin bulunmadığını görünce bağlama işlemini gerçekleştiremez. Bağlayıcı<br />

programlar bu durumda bir hata iletisi verir.<br />

int main()<br />

{<br />

return 0;<br />

}<br />

Biçiminde tanımlanmış bir main işlevi de int türden bir değer döndürmelidir. main<br />

işlevinin ürettiği geri dönüş değeri, programın çalışması bittikten sonra işletim sistemine<br />

iletilir.<br />

Geleneksel olarak, main işlevinin 0 değerine geri dönmesi programın sorunsuz bir şekilde<br />

sonlandırıldığı anlamına gelir. main işlevinin 0 dışında bir değere geri dönmesi ise, kodu<br />

okuyan tarafından programın başarısızlıkla sona erdirildiği biçiminde yorumlanır. Yani bazı<br />

nedenlerle yapılmak istenenler yapılamamış, bu nedenle main işlevi sonlandırılmıştır.<br />

57/529

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

Saved successfully!

Ooh no, something went wrong!