Neden Herşey Sıfırdan Başlar

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 :-).

 

 

 

Tags: , , ,

LLP