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

Necati Ergin<br />

yazısı çıkar.<br />

Aşağıdaki örnekte de "Necati Ergin" dizgesi str adresine kopyalanır. Dizge ifadelerinin<br />

bulunduğu yerde, char türden bir dizinin adresi bulunduğu düşünülmelidir.<br />

#include <br />

#include <br />

int main()<br />

{<br />

char str[20];<br />

strcpy(str, "Necati Ergin");<br />

puts(str);<br />

}<br />

return 0;<br />

Dizgeler Salt Okunur Yazılardır<br />

Dizgeler salt okunur bellek alanlarında tutulabilir. Bu yüzden bir dizgenin içeriğinin<br />

kaynak kod içinde değiştirilmesi yanlıştır. Dizgeleri değiştiren kodlar tanımsız davranış<br />

(undefined behavior) özelliği gösterir. Aşağıdaki örneği inceleyin:<br />

#include <br />

int main()<br />

{<br />

char *ptr = "Durak";<br />

*ptr = 'B'; /* Yanlış */<br />

puts(ptr);<br />

}<br />

return 0;<br />

main işlevi içinde tanımlanan ptr isimli gösterici değişken "Durak" dizgesini gösteriyor. ptr<br />

göstericisinin gösterdiği nesneye atama yapılması yanlıştır. Yukarıdaki program derleme<br />

zamanına yönelik bir hata içermiyor.<br />

Özdeş Dizgeler<br />

C derleyicileri kaynak kodun çeşitli yerlerinde tamamen özdeş dizgelere rastlasa bile<br />

bunlar için farklı yerler ayırabilir. Ya da derleyici, dizgelerin salt okunur yazılar olmasına<br />

dayanarak, özdeş dizgelerin yalnızca bir kopyasını bellekte saklayabilir. Özdeş dizgelerin<br />

nasıl saklanacağı derleyicinin seçimine bırakılmıştır. Birçok derleyici, özdeş dizgelerin<br />

bellekte nasıl tutulacakları konusunda programcının seçim yapmasına olanak verir.<br />

Dizgelerin Karşılaştırılması<br />

Dizgelerin doğrudan karşılaştırılması yanlış bir işlemdir.<br />

/***/<br />

if ("Ankara" == "Ankara")<br />

printf("dogru!\n");<br />

else<br />

printf("yanlis!\n");<br />

/***/<br />

293

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

Saved successfully!

Ooh no, something went wrong!