#Sharp.Net - Suat Tuncer

30/5/2007 - Neden Herşey Sıfırdan Başlar

Kategori: LLP

 

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

EkleBunu Sosyal Paylaşım Butonu
Yorum yaz!

2009-01-31 18:38:25 - diziler

Yazan: abdullah

dizinin başlangıç adresi + (dizi tipinin adres büyüklüğü * erişilmek istenilen indeks)
adresleme mantığı bu değilde
bu olsaydı 0 a gerek olmazdı


dizinin başlangıç adresi + (dizi tipinin adres büyüklüğü * (erişilmek istenilen indeks-1))

rakamlar dizisi

1. Eleman [1] 80100 data
80101 data
80102 data
80103 data

2. Eleman [2] 80104 data
80105 data
80106 data
80107 data

3. Eleman [3] 80108 data
80109 data
80110 data
80111 data

4.Eleman [4] 80112 data
80113 data
80114 data
80115 data

5.Eleman [5] 80116 data
80117 data
80118 data
80119 data

yani :
80100 + (4*(4-1)) = 80112 > yani 4. elemanın (4 indeks numaralı elemanın) başlangıç adresi
Bağlantı

2007-12-14 15:00:55 - RE: Kanıtlamanın Verdiği Güç

Yazan: suattuncer
c,c++,c# gibi diller dizi adreslemeyi böyle yapmaktadır.
Bu genel bir kanı değil, dillerin adresleme mantığıdır,

Ayrıca hayattaki herşeyi bu yaklaşımla adresleyebilirsin, hayattaki herşeyi temsil edecek bir yapıya ihtiyacın varsa objecte bakman yeterlidir, evrendeki her nesneyi temsil edecek bir tip oluşturabilirisin ve tüm bu tipler object'e atana bilmektedir. oysaki object sadece nesnelerin başlangıç adreslerini tutumaktadır. haliyle "evrendeki herşeye hakimdir",

every thing is an object but object is nothing ;-)
Bağlantı

2007-12-07 11:05:31 - Kanıtlamanın Verdiği Güç

Yazan: isimsiz
Kanıtlama İçin Tsk ederiz...
Ama Bu Tür Yığın İbaresi İçeren Her Durumda Bu Genel Kanıya Varılabilir...
İnsan Yaşamındaki Yıllar Da Aynı Şekilde...
Ama Tabi Bunun Adreslnemesi Diye bir sey yok hayatta...!
Bağlantı

<- Son Sayfa :: Sonraki Sayfa ->

Hakkımda

.Net teknolojileri, # Sharp Dilleri ve olan biten ne varsa

Kategoriler

Arkadaşlarım

hepgittik