Bu programda, bir tamsayi dizisi tanimliyoruz. Gordugunuz gibi, ayni katar tanimlama gibi.. Bu sayede, index degiskeni haric oniki tane degiskenimiz oluyor. Bu degiskenlerin isimleri "degerler[0]" , "degerler[1]" ,vs. dir. Ilk "for" dongusunde, bunlara deger atiyoruz, ikincisi ise, index degiskeni ve "degerler" dizisinin icindekileri ekrana yaziyor.
Burada, "float" olarak tanimli bir kayar nokta dizisi goruyorsunuz. Ayrica bu program, katarlara nasil baslangic degeri atanabilecegini gosteriyor. Koseli parantezlerin icini bos birakarak, derleyicinin o veriyi saklamak icin yeteri kadar yer ayarlamasini sagladik. Programin icinde, bir katar daha ilk degerini veriyoruz. Burada onune "static" koymak zorunlugumuz var. Baska yeni birsey yok bu programda. Degiskenler rastgele degerlere atanir, ve sonra da bu degerler ekrana yazdirilir.
Bir fonksiyondan deger dondurmenin bir yolu da, diziler kullanmaktir. Buradam 20 hanelik bir dizi tanimladiktan sonra, icine degerler atiyoruz, bu degerlerin ilk besini ekrana yazdiktan sonra, "yapbirsey" isimli fonksiyona atliyoruz. Burada goreceginiz gibi, bu fonksiyon "matrix" isimli diziye "list" demeyi tercih ediyor. Fonksiyona, ne cins bir dizi gececegini bildirmek icin, "int" olarak "list"i tanimliyoruz. Fonksiyona kac elemanlik bir dizi gecegini soylememize luzum yok, fakat istenirse belirtilebilir. Bu nedenle bos koseli parantezler kullaniyoruz.
Bu fonksiyon da, kendisine gecen degerleri gosterdikten sonra, bu degerlere 10 ekliyor, ve yeni degerleri gosterip, ana programa geri donuyor. Ana programda goruyoruz ki, fonksiyonun yaptigi degisiklikler, "matrix" degerlerini de degistirmis.
Dizilerin, normal degiskenlerin aksine, fonksiyondaki degerleri degisince, cagiran programdaki dizinin degerlerinin degismesini garipsiyebilirsiniz. Pointerlar konusuna gelince butun bunlar daha manali olacaktir.
main(){int i,j;
int buyuk[8][8],dev[25][12];
for(i = 0;i < 8;i++)for(j = 0;j < 8;j++)
buyuk[i][j] = i * j; /* Bu bir carpim tablosudur */for(i = 0;i < 25;i++)for(j = 0;j < 12;j++)
dev[i][j] = i + j; /* Bu da bir toplama tablosudur */
buyuk[2][6] = dev[24][10]*22;
buyuk[2][2] = 5;
buyuk[buyuk[2][2]][buyuk[2][2]] = 177; /* bu, buyuk[5][5] = 177; demek */for(i = 0;i < 8;i++){for(j = 0;j < 8;j++)
printf("%5d ",buyuk[i][j]);
printf("\n"); /* Her i nin degeri artinca, bir RETURN*/}}
Burada iki tane iki boyutlu dizi kullaniyoruz. "buyuk" adli 8 e 8 lik dizinin elemanlari [0][0] dan [7][7] ye kadar, toplam 64 tanedir. Diger tanimli "dev" dizi ise, kare degildir, fakat dizinin kare olmasinin sart olmadigini gosteren bir ornektir.
Iki dizi de biri carpim tablosu, digeri de toplama tablosu ile doldurulur.
Dizi elemanlarinin tek tek degistirilebilecegini gostermek icin, once "buyuk" un elemanlarinda birine, "dev" in bir elemani ile, 22 ile carpildiktan sonra atanir. Ikinci atamada ise, "buyuk[2][2]" elemani 5 degerine atanir. Herhangi bir islemin index olarak kullanilabilecegini gosteren ucuncu atama ise, aslinda "big[5][5] = 177;" dir.