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

#include <br />

int is_prime(int val);<br />

int *get_first_prime(const int *ptr, int size)<br />

{<br />

int k;<br />

}<br />

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

if (isprime (ptr[k]))<br />

return ptr + k;<br />

return NULL;<br />

C dilinde, adrese geri dönen bir işlevin başarısızlık durumunda NULL adresine geri<br />

dönmesi, çok sık kullanılan bir konvensiyondur.<br />

Parametre değişkeni gösterici olan bir işlev, kendisine geçilen NULL adresini bir bayrak<br />

değeri olarak kullanabilir. Aşağıdaki gibi bir işlev tasarladığımızı düşünelim:<br />

void func(char *ptr)<br />

{<br />

if (ptr == NULL) {<br />

/***/<br />

}<br />

else {<br />

/***/<br />

}<br />

}<br />

İşlev kendisine geçilen adresin NULL adresi olup olmamasına göre farklı işler yapıyor.<br />

Tabi bu durumun işlevi çağıran kod parçası tarafından bilinmesi gerekir. Standart C<br />

işlevlerinden time işlevi böyledir. time işlevinin gösterici parametresine NULL adresi<br />

geçildiğinde işlev herhangi bir nesneye değer atamaz. Hesapladığı değeri yalnızca geri<br />

dönüş değeri olarak dışarıya iletir. Ancak işleve NULL adresi dışında bir adres<br />

gönderildiğinde işlev verilen adresteki nesneye hesapladığı değeri yazar.<br />

Birçok programcı bir gösterici değişkene güvenilir bir adres atamadan önce, göstericiye<br />

NULL adresi değerini verir. Böylece kod içinde ilgili göstericinin henüz bir nesneyi<br />

göstermediği bilgisi güçlü bir biçimde verilerek, kodun okunabilirliği artırılır.<br />

Bir göstericinin ömrü henüz sona ermeden, gösterdiği nesnenin ömrü sona erebilir. Bu<br />

durumda göstericinin değeri olan adres güvenilir bir adres değildir. Kod içinde bu durumu<br />

vurgulamak için göstericiye NULL adresi atanabilir.<br />

Göstericilere İlişkin Uyarılar ve Olası Gösterici Hataları<br />

Bir Göstericiye Farklı Türden Bir Adres Atanması:<br />

Bir göstericiye farklı türden bir adres atandığında, C derleyicilerin çoğu durumu şüpheyle<br />

karşılayarak mantıksal bir uyarı iletisi verir. Ancak derleyici yine de farklı türden adresin<br />

sayısal bileşenini hedef göstericiye atar. Borland derleyicileri bu durumda aşağıdaki uyarı<br />

iletisini verir:<br />

warning : suspicious pointer conversion in function ......<br />

Aşağıdaki kodu inceleyin:<br />

260

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

Saved successfully!

Ooh no, something went wrong!