İçeriğe atla

C Programlama Dili/Diziler

Vikikitap, özgür kütüphane

Bellekteki ardışık gözeneklerin toplamına dizi denir.

Dizi bildirimi

[değiştir]

C programlama dilinde dizi belirtimi şöyle yapılır:

veriTipi diziAdi[diziBoyutu];

Böyle kullandığımızda bellekte diziBoyutu*sizeof(veriTipi) kadar alan açılır. Dizinin elemanlarına indis ([]) operatörüyle erişebiliriz. Örnek:

int dizi[10];
printf("%d",dizi[1]);

Burada bellekte 10 tane int depolayabilecek kadar bir alan açılmakta ve dizinin 1. elemanı ekrana yazdırılmaktadır. Ancak burada dikkat etmemiz gereken husus int dizi[10]; satırının bellekte sadece bir bölge tahsis etmesidir. Bölgedeki gözeneklere herhangi bir değer atanmaz. Dolayısıyla printf("%d",dizi[1]); satırında bizim tahmin edemeyeceğimiz bir değer ekrana yazdırılacaktır. Eğer dizinin elemanlarına ilk değer vermek istiyorsak;

int dizi[10]={1,5,6,2,5,6,3,1,2,9};

şeklini kullanırız. Burada diziye atanan eleman sayısının 10 olması zorunlu değildir. Diziye atanan eleman sayısı 10'dan az olursa kalan elemanlara 0 atanır.

Çok boyutlu diziler

[değiştir]

İki boyutlu bir dizi şöyle bildirilir:

veriTipi diziAdi[satirSayisi][sutunSayisi];

Örnek:

int dizi[2][3] = { {1,2,3}, {4,5,6} };
printf("%d", dizi[1][0]);

Bu program ekrana 4 çıktısını verecektir. Başka bir örnek:

int dizi[2][3] = { 1,2,3,4,5,6};
printf("%d", dizi[1][0]);

Burada değerler mantıksal olarak değil, bellekte depolandıkları şekilde diziye atandı. Çok boyutlu diziler de tek boyutlu dizilerde olduğu gibi bellekte ardışık sıralanır. Başka bir örnek:

int dizi[2][3][2] = { { {1,2}, {3,4}, {5, 6} }, { {7, 8}, {9, 10}, {11, 12} } };
printf("%d", dizi[0][2][1]);

Burada ise 2*3*2 boyutlarında üç boyutlu bir dizi tanımlanmış ve kullanılmıştır. Kodun ekran çıktısı 6'dır. Eğer dizinin tanımlandığı satırda diziye ilk atama yapılıyorsa dizinin eleman sayısının belirtilmesi şart değildir. Örnek:

int dizi[] = { 1, 2, 3, 4, 5, 6 };

Bu dizinin eleman sayısı 6'dır. Köşeli parantezler arasına 6 sayısının yazılması ile yazılmaması arasında herhangi bir fark yoktur. Başka bir örnek:

char aylar[3][5] = { "Ocak", "Subat", "Mart" };

Stringler birer karakter dizisi olduğuna göre string dizisi de bir karakter dizisi dizisidir. Yukarıdaki kullanım tamamen geçerlidir.