POINTER NEDİR?
Posted by admin on May 19, 2008
Pointer Nedir?
Basitce, pointer, bir adrestir. Bir degisken olmak yerine, bir degiskenin hafizadaki adresini tasiyan bir ‘ok isareti‘dir.
main() /* Pointer kullanimi ornegi */ { int index,*pt1,*pt2; index = 39; /* herhangi bir deger */ pt1 = &index; /* ‘index’ in adresi */ pt2 = pt1; printf(“Deger simdi %d %d %d dir.\n”,index,*pt1,*pt2); *pt1 = 13; /* ‘index’ in degerine degisiklik yapalim */ printf(“Degistikten sonra ise %d %d %d\n”,index,*pt1,*pt2); }
Su an icin, programin index degiskenini ve iki tane astrisk ile baslayan terimlerin tanimlandigi yere bakmayin. Aslinda astrisk denilen bu isarete, biz simdilik ‘yildiz’ diyelim.
Programda ilk once, index degiskenine 39 degerini atiyoruz. Bunun altindaki satirda ise, pt1′e tuhaf bir deger atanmasini goruyoruz - index degiskeni, ve onunde bir & ampersand isareti ile. Bu ornekte, pt1 ve pt2 pointer dir, ve index de basit bir degiskendir. Simdi bir problemle karsi karsiyayiz. Bu programda pointer kullaniliyor, fakat nasil kullanilacagini ogrenmedik.
Bu gorecekleriniz biraz aklinizi karistiracak, fakat bunlari anlamadan gecmeyin.
iki önemli kural
- Onune ampersand isareti konmus bir degisken, o degiskenin adresini belirtir. Yani altinci satir, soyle okunabilir: “pt1, index isimli degiskenin adresini alir.”
- Onune yildiz konmus bir pointer, kendisinin tuttugu adreste bulunan degeri gosterir. Programin dokuzuncu satiri, soyle okunabilir: “pt1 pointer’inin gosterdigi yere, 13 degeri atandi.”
Hafıza Yardımcısı
- & ‘i bir adres olarak dusunun
- * ‘i adresteki deger olarak dusunun.
pt1 ve pt2 pointer olarak, kendileri bir deger tasimazlar, fakat bellekteki bir adresi gosterirler. Bu programda, ‘index’ degiskenini gosteren pointer’lar oldugu icin, degiskenin degerini hem index ile, hemde onun adresini tasiyan pointer’lar ile degistirebiliriz.
Dokuzuncu satirda, index degiskeninin degeri, pt1 pointer’i ile degistiriliyor. Program icinde ‘index’ i kullandigimiz herhangi biryerde, (pt1 baska birseye atanincaya kadar), ‘*pt1′ i de kullanmamiz mumkundur, cunku pt1, index’in adresini tasimaktadir.
Bir Başka Pointer
Programa degisklik katmak icin, birbaska pointer daha tanimladim. “pt2″ isimli bu pointer, yedinci satirda “pt1″‘in tasidigi adresi almaktadir. Bu atamadan once, ayni henuz deger atanmamis degiskenler gibi icinde rastgele bilgiler vardir. Bundan sonra, “pt2″ de “index” degiskeninin adresini tasimaktadir. Ornegin, dokuzuncu satirda “*pt1″ i “*pt2″ ile degistirsek de, sonuc ayni olacaktir - cunku iki pointer da ayni adresi tasimaktadir.
Sadece Bir Değişken
Bu programda uc tane degisken var gibi gorunse de, aslinda bir tane degisken tanimlidir. Iki pointer ise, bu degiskenin adresini tutmaktadir. Bu durum, “printf” komutunun hep 13 degerini yazmasindan da anlasilabilir.
Bu gercekten anlamasi zor bir kavramdir, fakat en kucuk C programlari disinda hepsi tarafindan kullanildigi icin, ogrenmeniz gereklidir.
[...] Pointer Nedir? [...]
Neden C Programlama dilinde işaretçiler kullanılır?
Thanks
Patrick Davis
cok tesekkurler ilginc
bilgi için teşekkürler. Pointer bazı adrese noktaları bir değişkendir. Bize işaretçiler ve C + + dilinde referansları arasındaki farkları söyleyebilir misiniz?
I found your blog on google.I would like to offer my site: Acai Berry Reviews