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

}<br />

printf("(%s) ", ptr[i]);<br />

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

int main()<br />

{<br />

char names[ARRAY_SIZE][20] = {"Ali", "Veli", "Hasan", "Necati",<br />

"Deniz", "Kaan", "Selami","Salah", "Nejla", "Huseyin", "Derya", "Funda",<br />

"Kemal", "Burak", "Burcu", "Ozlem", "Nuri", "Metin", "Guray", "Anil"};<br />

display_names(names, ARRAY_SIZE);<br />

sort_names(names, ARRAY_SIZE);<br />

printf("***********************************\n");<br />

display_names(names, ARRAY_SIZE);<br />

}<br />

return 0;<br />

Yukarıda tanımlanan işlevlerden swap_str işlevi adreslerini aldığı iki yazıyı takas ediyor.<br />

display_names isimli işlev ise başlangıç adresini ve boyutunu aldığı iki boyutlu dizide yer<br />

alan isimleri ekrana yazdırıyor.<br />

sort_names isimli işlev ise başlangıç adresini ve boyutunu aldığı iki boyutlu dizi içinde<br />

tutulan isimleri küçükten büyüğe doğru sıralıyor.<br />

char * Türden Diziyle char Türden İki Boyutlu Dizi Arasındaki<br />

Farklar<br />

Mantıksal ilişki içinde n tane yazı, bir gösterici dizisi yardımıyla tutulabileceği gibi iki<br />

boyutlu bir dizi içinde de tutulabilir:<br />

char *pnames[10] = {"Ali", "Veli", "Hasan", "Deniz", "Ferda", "Murat",<br />

"Ayca", "Erdem", "Kaan", "Gurbuz"};<br />

char names[10][20] = {"Ali", "Veli", "Hasan", "Deniz", "Ferda", "Murat",<br />

"Ayca", "Erdem", "Kaan", "Gurbuz"};<br />

Elemanları dizgeleri gösteren bir gösterici dizisinin elemanları, yalnızca okuma amacıyla<br />

kullanılabilecek yazıların başlangıç adreslerini tutar. Dizgelerin yalnızca okuma amacıyla<br />

kullanılabilecek yazılar olduğunu anımsamalısınız.<br />

Yukarıdaki örnekte, pnames dizisinin elemanı olan göstericilerin gösterdiği yazılar<br />

üzerinde değişiklik yapmak, doğru değildir. Ancak names dizisi içinde yer alan isimler<br />

istenirse değiştirilebilir. Aşağıdaki main işlevini inceleyin:<br />

#include <br />

int main()<br />

{<br />

int k;<br />

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

strrev(pnames[k]); /* Yanlış */<br />

strrev(names[k]);<br />

/* Yanlış değil*/<br />

}<br />

}<br />

return 0;<br />

320

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

Saved successfully!

Ooh no, something went wrong!