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

Boş Dizge<br />

Bir dizge boş olabilir (null string) yani içinde hiçbir karakter bulunmayabilir. Bu durum iki<br />

çift tırnak karakterinin arasına hiçbir karakter yazılmaması ile oluşturulur.<br />

char *ptr = "";<br />

Yukarıdaki deyim ile ptr göstericisine boş dizge atanıyor. Boş dizgeler de bellekte bir<br />

adres belirtir. Derleyici boş bir dizge gördüğünde, bellekte güvenilir bir yere yalnızca<br />

sonlandırıcı karakteri yerleştirir.<br />

Boş bir dizge uzunluğu 0 olan bir dizgedir. Aşağıdaki programı derleyerek çalıştırın:<br />

#include <br />

#include <br />

int main()<br />

{<br />

char *ptr = "";<br />

printf("uzunluk = %d\n", strlen(ptr));<br />

}<br />

return 0;<br />

Dizgelerle Gösterici Değişkenlere İlkdeğer Verilmesi<br />

Dizgeler kullanılarak char türden gösterici değişkenlere ilkdeğer verilebilir. Örneğin:<br />

char *p = "İstanbul";<br />

char *err = "Bellek yetersiz";<br />

char *s = "Devam etmek için bir tuşa basınız";<br />

Dizgeler derleyiciler tarafından char türden bir dizi adresi olarak ele alındığına göre, char<br />

türden gösterici değişkenlere dizgelerle ilkdeğer verilmesi doğal bir durumdur.<br />

Dizilere çift tırnak içinde ilkdeğer vermek ile, gösterici değişkenlere dizgelerle ilkdeğer<br />

vermek arasındaki farka dikkat etmek gerekir:<br />

char *p = "Deneme";<br />

char s[10] = "Deneme";<br />

deyimleri tamamen farklıdır.<br />

Gösterici değişkenlere ilkdeğer verildiğinde, derleyici bunu bir dizge ifadesi olarak ele alır.<br />

Yani dizge belleğe yerleştirildikten sonra başlangıç adresi göstericiye atanır. Oysa<br />

dizilerde önce dizi için yer ayrılır, daha sonra karakterler tek tek dizi elemanlarına<br />

yerleştirilir. Dizilere ilkdeğer verirken kullanılan çift tırnak ifadeleri adres bilgisine<br />

dönüştürülmez. Dizi elemanlarına tek tek char türden değişmezlerle ilkdeğer verme işlemi<br />

zahmetli olduğu için, programcının işini kolaylaştırmak amacı ile böyle bir ilkdeğer verme<br />

kuralı getirilmiştir.<br />

char s[10] = "Deneme";<br />

deyimi aslında<br />

char s[10] = {'D', 'e', 'n', 'e', 'm', 'e', '\0'};<br />

ile aynı anlamdadır.<br />

298

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

Saved successfully!

Ooh no, something went wrong!