08.11.2014 Views

c_kitap

c_kitap

c_kitap

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

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

Dizilere yukarıdaki gibi ilkdeğer verildiğinde, verilen değerler dizinin ilk elemanından<br />

başlayarak dizi elemanlarına sırayla atanmış olur.<br />

Dizilerin tüm elemanlarına ilkdeğer verme zorunluluğu yoktur. Dizinin eleman sayısından<br />

daha az sayıda elemana ilkdeğer verilmesi durumunda kalan elemanlara 0 değeri atanmış<br />

olur. Bu kural hem yerel hem de global diziler için geçerlidir.<br />

Bu durumda bir dizinin bütün elemanlarına 0 değeri verilmek isteniyorsa bunun en kısa<br />

yolu aşağıdaki gibidir:<br />

int a[20] = {0};<br />

Yalnızca dizinin ilk elemanına 0 ilkdeğeri veriliyor. Bu durumda derleyici dizinin kalan<br />

elemanlarına otomatik olarak 0 değeri yerleştirecek kodu üretir.<br />

Dizi elemanlarına ilkdeğer verilmesinde kullanılan ifadeler, değişmez ifadeleri (constant<br />

expression) olmalıdır.<br />

int a[10] = {b, b + 1, b + 2}; /* Geçersiz */<br />

gibi bir ilkdeğer verme işlemi geçersizdir.<br />

[Yukarıdaki tanımlama C++ dilinin kurallarına uygundur. C++ dilinde dizi elemanlarına değişmez ifadeleriyle<br />

ilkdeğer vermek zorunlu değildir]<br />

Bir diziye ilkdeğer verme işleminde, dizi eleman sayısından daha fazla sayıda ilkdeğer<br />

vermek geçersizdir:<br />

int b[5] = {1, 2, 3, 4, 5, 6}; /* Geçersiz */<br />

Yukarıdaki örnekte b dizisi 5 elemanlı olmasına karşın, ilkdeğer verme deyiminde 6 değer<br />

kullanılıyor. Bu durum derleme zamanında hata oluşturur.<br />

İlkdeğer verme işleminde dizi boyutu belirtilmeyebilir. Bu durumda derleyici dizi<br />

uzunluğunu, verilen ilkdeğerleri sayarak kendi hesaplar. Dizinin o boyutta açıldığını kabul<br />

eder. Örneğin:<br />

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

Derleyici yukarıdaki deyimi gördüğünde a dizisinin 5 elemanlı olduğunu kabul eder. Bu<br />

durumda yukarıdaki gibi bir bildirimle aşağıdaki gibi bir bildirim eşdeğerdir:<br />

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

Başka örnekler :<br />

char name[] = {'B' 'E ', 'R', 'N', 'A', '\0'};<br />

unsigned short count[ ] = {1, 4, 5, 7, 8, 9, 12, 15, 13, 21};<br />

Derleyici name dizisinin boyutunu 6, count dizisinin boyutunu ise 10 olarak varsayar.<br />

Diziye ilkdeğer verme listesi bir virgül atomuyla sonlandırılabilir:<br />

int a[] = { 1, 4, 5, 7, 8, 9, 12, 15, 13,<br />

2, 8, 9, 8, 9, 4, 15, 18, 25,<br />

};<br />

Yerel ve Global Diziler<br />

Bir dizi de diğer nesneler gibi yerel ya da global olabilir. Yerel diziler blokların içinde<br />

tanımlanan dizilerdir. Global diziler ise global isim alanında, yani tüm blokların dışında<br />

tanımlanır. Global bir dizinin tüm elemanları, global nesnelerin özelliklerine sahip olur.<br />

203

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

Saved successfully!

Ooh no, something went wrong!