C Programlama Dili/Diziler
Bellekteki ardışık gözeneklerin toplamına dizi denir.
Dizi bildirimi
değiştirC 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.