30/5/2007 - Neden Herşey Sıfırdan Başlar
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++){ //istenilen kodlar buraya } 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
rakamlar dizisi
| 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 |
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 :-)
|