08.11.2014 Views

c_kitap

c_kitap

c_kitap

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

C ve Sistem Programcıları Derneği - C Ders Notları - Necati Ergin<br />

/******/<br />

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

display_array(a[i], COL);<br />

}<br />

return 0;<br />

main işlevi içinde yer alan for döngü deyimini inceleyelim:<br />

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

fill_array(a[i], COL);<br />

a[i] ifadesi döngünün her turunda a dizisinin elemanı olan COL boyutundaki tek boyutlu<br />

dizilere karşılık gelir değil mi? Bu ifade işleme sokulduğunda derleyici tarafından otomatik<br />

olarak bu dizinin ilk elemanının adresine dönüştürülür.<br />

a[0] ifadesi otomatik olarak &a[0][0] ifadesine dönüştürülür. fill_array isimli işleve ikinci<br />

argüman olarak da COL ifadesi gönderilir. Çünkü COL ifadesi adresi a[i] olan dizinin<br />

boyutunu gösterir.<br />

Bir dizinin tanımı sırasında dizi boyutunu gösteren ifadelerin değişmez ifadesi (constant<br />

expresion) olması gerektiğini biliyorsunuz. Aynı koşul çok boyutlu diziler için de geçerlidir.<br />

Eğer bir matrisin boyutları derleme zamanında değil de programın çalışma zamanında<br />

belli oluyorsa dinamik bellek yönetimi kullanılmalıdır. Bu konudaki örnekler "Dinamik<br />

Belek Yönetimi" bölümünde ele alınmaktadır.<br />

İki Boyutlu Dizilere İlkdeğer Verilmesi<br />

İki boyutlu dizilere de ilkdeğer verilebilir. Verilen ilkdeğerler sırasıyla iki boyutlu dizinin<br />

elemanı olan tek boyutlu dizilerin elemanlarına atanır.<br />

#include <br />

int main()<br />

{<br />

int a[3][5] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};<br />

int i, k;<br />

}<br />

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

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

printf("%2d ", a[i][k]);<br />

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

}<br />

return 0;<br />

İstenirse ilkdeğerleri içeren bloğun içinde içsel bloklar kullanılarak, eleman olan dizilerin<br />

belirli sayıda elemanına ilkdeğer verilebilir. İlk değer verilmeyen elemanlara otomatik<br />

olarak 0 değeri atanır. Aşağıdaki örneği de derleyerek çalıştırın:<br />

#include <br />

int main()<br />

{<br />

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

int i, k;<br />

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

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

317

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

Saved successfully!

Ooh no, something went wrong!