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

Aynı iş bir şüphesiz bir while döngü deyimiyle de yapılabilirdi:<br />

i = 0;<br />

while (i < SIZE)<br />

a[i++] = 0;<br />

Aşağıda a dizisinin elemanlarına standart scanf işleviyle standart giriş biriminden değer<br />

alınıyor:<br />

for (i = 0; i < SIZE; i++)<br />

scanf("%d", &a[i]);<br />

ya da<br />

i = 0;<br />

while (i < SIZE)<br />

scanf("%d", &a[i++]);<br />

Aşağıda a dizisinin elemanlarının toplamı hesaplanıyor:<br />

for (total = 0, i = 0; i < SIZE; i++)<br />

total += a[i];<br />

ya da<br />

total = 0;<br />

i = 0;<br />

while (i < SIZE)<br />

total += a[i++];<br />

Dizilerin Taşırılması<br />

Bir dizi tanımlamasını gören derleyici dizi için bellekte dizinin tüm elemanlarının sığacağı<br />

büyüklükte bir alan ayırır:<br />

double a[10];<br />

Gibi bir tanımlama yapıldığında, çalışılan sistemde double türünün bellekte 8 byte yer<br />

kapladığı var sayılırsa, dizi için bellekte bitişik (contiguous) toplam 80 byte'lık bir yer<br />

ayrılır.<br />

Dizinin son elemanı a[9] olur. Çok sık yapılan bir hata, dizinin son elemanına ulaşmak<br />

amacıyla yanlışlıkla bellekte derleyici tarafından ayrılmamış bir yere değer atamak, yani<br />

diziyi taşırmaktır:<br />

a[10] = 5.;<br />

deyimiyle bellekte ne amaçla kullanıldığı bilinmeyen 8 byte' lık bir alana, yani güvenli<br />

olmayan bir bellek bölgesine değer aktarma girişiminde bulunulur. Dizi taşmaları derleme<br />

zamanında kontrol edilmez. Böyle hatalar programın çalışma zamanı ile ilgilidir.<br />

Dizilere İlkdeğer Verilmesi<br />

Değişken tanımlamalarında tanımlanan bir değişkenin "ilkdeğer verme sözdizimi" diye<br />

isimlendirilen bir kural ile belirli bir değerle başlatılması sağlanabiliyordu.<br />

Tanımlanan dizilere de ilkdeğer verilebilir:<br />

double sample[5] = {1.3, 2.5, 3.5, 5.8, 6.0};<br />

char str[4] = {'d', 'i', 'z', 'i'};<br />

unsigned a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};<br />

202

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

Saved successfully!

Ooh no, something went wrong!