10 Mayıs 2011 Salı

How to initialize an array in C - C de bir dizinin başlangıç değerlerinin verilmesi

C dilinde bir dizi oluşturmak için yapılması gereken ilk önce o dizi değişkeninin tipini belirlemektir. Aşağıda diziler tanımlamak için çeşitli örnekler verilmiştir.

int sayilar[5];
char yazi[9];
float ondalikli[4];

Yukarıda görülen örnekler ile çeşitli tiplerde diziler oluşturmuş buluyoruz. Peki bu dizilerin ilk değerlerini nasıl atarız?
Dizilere ilk değer atanmasında kullanılan yöntemlerden birincisi, dizinin eleman sayısı kadar değeri diziyi oluştururken diziye eşitlemektir. Bu işlemi yaparken küme parantezi ( { } ) kullanılır.

int sayilar[5] = {8,12,65,25,12};
char kelime[5] = {'a','l','p','e','r'};
float ondalikli[2] = {1.12 , 2.28};

Bir diğer yöntem ise diziyi elemansız oluşturup başlangıç değerleri sayısı kadar otomatik olarak dizinin eleman sayısını belirlemektir.

int sayilar[ ] = {8,12,65,25,12};
char kelime[ ] = {'a','l','p','e','r'};
float ondalikli[ ] = {1.12 , 2.28};

Eğer dizi bu şekilde oluşturulursa eleman sayısı kendiliğinden belirlenmiş olur. Bu sayilar dizisinin 5 elemanlı, kelime dizisinin yine 5 elemanli ve ondalikli dizisinin 2 elemanlı olduğunu gösterir.


Bir diziyi oluştururken başlangıç değerleri belirlenmezse, ram de bulunan mevcut değerler (biz buna hayalet değerler diyoruz) dizinin başlangıç değeri olarak atanır.

int sayilar[5];

Bu işlem sonucu elemanlar aşağıdakine benzer şekil alır.

sayilar[0] = 78
sayilar[1] = 98
sayilar[2] =  -144
sayilar[3] = 32125
sayilar[4] =  -985

Dikkat edilecek olursa beş elemanlı bir dizinin başlangıç elemanı 0. elemandır ve bitiş elemanı da 4. elemandır. Beş eleman ile oluşturulmuş bir dizinin beşinci elemanını okumaya çalışmak hataya yol açar.

Dizinin hayalet değerlerinden kurtulmak için başlangıçta sıfırlama yapılır. Birden fazla elemana sahip bir diziyi oluştururken sadece ilk elemanı sıfıra eşitlemek ve diğer elemanların ne olduğunu belirlememek, dizinin bütün elemanlarını sıfıra eşitlemekle aynı anlama gelir.

int sayilar[5] = {0};

Bu işlem sonucunda dizi elemanlarının tamamı aşağıdaki gibi olur.

sayilar[0] = 0;
sayilar[1] = 0;
sayilar[2] = 0;
sayilar[3] = 0;
sayilar[4] = 0;

Dizi oluşturulup çeşitli değerlere atandıktan sonra tekrardan sıfırlanması isteniyorsa, bu ancak bütün elemanların tek tek sıfıra eşitlenmesi ile sağlanır. Bu ister tek tek elemanların sıfıra eşitlenmesi ile veya bir döngü kullanarak elemanların sıfıra eşitlenmesi ile yapılır. Çok elemanlı diziler için mantıklı olan döngü kullanılmasıdır.

Başlangıç değeri önceden atanmış bir dizinin sıfırlanması :


int sayilar[5] = {3,5,6,7,9};
int i = 0;
for( i = 0 ; i <= 4 ; i++ )
   sayilar[i]=0;

Böylece sayilar dizisinin bütün elemanları sıfırlanmış olur.

Hiç yorum yok:

Yorum Gönder