by Suat TUNCER
30. May 2007 12:00
Hiç düşündünüz mü, neden dizilerde indexler sıfırdan başlar ?
Aslında oldukça basit; int tipinde 5 elemanlı bir dizinin elemanlarını dolaşmak için genellikle aşağıdaki kod kullanılır
int main(){
int rakamlar[5];
for(int i=0;i<5;i++){
// birşeyler yap
}
return 0;
}
Yukarıdaki dizinin herhangi bir elemanına erişmek demek, aslında
dizinin o elemanının RAM'deki adresine erişmek demekdir şöyleki ;
int rakamlar[5]; //int tipi bellekte 4 Byte yer tutar
RAM'de bu diznin yerleşimini şöyle olacaktır
| 1. Eleman [0] |
80100 |
data |
| 80101 |
data |
| 80102 |
data |
| 80103 |
data |
| 2. Eleman [1] |
80104 |
data |
| 80105 |
data |
| 80106 |
data |
| 80107 |
data |
| 3. Eleman [2] |
80108 |
data |
| 80109 |
data |
| 80110 |
data |
| 80111 |
data |
| 4.Eleman [3] |
80112 |
data |
| 80113 |
data |
| 80114 |
data |
| 80115 |
data |
| 5.Eleman [4] |
80116 |
data |
| 80117 |
data |
| 80118 |
data |
| 80119 |
data |
rakamlar dizisi için örnek RAM yerleşimi.
Dizinin 4. Elemanına erişmek için 3 nolu index kullanılır, buda bizi
3 nolu elemanın RAM'de saklandığı bloğun başlangıç adresine erişmek
edemektir. Hemen hesaplayalım.
dizinin başlangıç adresi + (dizi tipinin adres büyüklüğü * erişilmek istenilen indeks)
yani :
80100 + (4*3) = 80112 > yani 4. elemanın (3 indeks numaralı elemanın) başlangıç adresi
şimdi 0'dan başlamadığını düşünüp hesaplayın, hiç bir zaman ilk elemana erişilemezdi :-).