BİLİŞİM - BİLGİSAYAR - EĞİTİM
  Pointer Operatörleri
 

Pointer Operatörleri

   Pointerlardan bahsedilince hemen aklımıza *, & operatörleri gelir.

& operatörü kendisinden sonra gelen ifadenin adresini bulur yani ".. nin adresi" olarak ifade edebiliriz.

   Örneğin &val ifadesi “val’in adresi” anlamına gelir.

* operatörü ise kendisinden sonra gelen pointer’in gösterdiği değeri refreans eder. Yani “ .. nin gösterdiği adresteki değer” olarak ifade edilebilr. Örneğin *pVal ifadesi “pVal’in gösterdiği adresteki değer” olarak ifade edilebilir.

Tanımlama ve Kullanım Şekilleri <Resim><Resim>

    Şu ana kadar pointerlardan ve pointerlar ile birlikte anılan *, & operatörlerinden kısaca bahsettik Şimdi artık C++’da bahsettiğimiz bu kavramların nasıl kullanıldıklarından bahsedeceğiz. Basit bir örnek ile işe başlıyalım.

 

 

#include <iostream.h>

 

main()

 

{

 

int val = 5;

 

//integer val değişkeni için hafıza yer ayarla ve 5 değerini ata.

 

int *pVal;

 

//integer pointer pVal değişkeni için hafızada yer ayır.

 

pVal = &val

 

//pVal değişkenine val değişkeninin adresini ata.

 

*pVal = 8;

 

//pVal değişkenin gösterdiği hafıza alanına 8 değerini ata

 

cout >> "val değiskenin adresi = " >> &val

 

cout >> "pVal değiskenin adresi=" >> &pVal

 

cout >> "val değiskenin değeri = " >> val;

 

cout >> "pVal değiskenin değeri =" >> pVal;

 

cout >> "pVal değiskenin gösterdiği yerdeki değer=" >> *pVal;

 

};

 

 

 

 

 

   Yukarıdaki örnek program pVal ve val değişkenlerinin adreslerini ve içlerindeki değerleri ekrana yazıyor

Örnek 2.5.1

 

Programın ekran çıktısı ise aşağıdaki gibi. 

 

val degiskenin adresi = 0x13df2914

pVal degiskenin adresi=0x13df2910

val degiskenin degeri = 8

pVal degiskenin degeri =0x13df2914

pVal degiskenin gösterdigi yerdeki deger=8

 

 

   Ekran çıktısından da görüldüğü üzere pVal değişkeni hafızada ayrı bir yer ayrılmış durumda ve bu ayrılan yere program içerisinde val değişkenin adresi atanıyor. val değişkeni ile direkt olarak hiç bir işlem yapılmamasına rağmen val değişkenini dolaylı olarak gösteren pVal değişkenini gösterdiği adrese 8 değeri atandığında val değişkenin içeriği de değişti.

   Hafızanın durumunu grafik olarak gösterirsek

   Başlangıçta aşagıdaki gibidir. pVal değişkenin gösterdiği adresteki bilgi hakkında bir fikrimiz yok.

 

 

<Resim>C ve C++'da değişkenlere otomatik olarak atanan bir ilk değer yoktur.Değişken tanımlandığında değişkene anlamlı bir değer atamak bizim sorumluluğumuzdadır. Bir pointer değişkenine anlamlı bir adres bilgisi atamadan değişkenin gösterdiği adrese değer atamak genellikler sistemin askında kalması , kitlenmesi veya başka bir programın hata vermesine neden olur.Sadece global ve statik değişkenlere derleyici tarafından ilk değer atanır

 

pVal 0x13df2910

val 0x13df2914 5

 

 

val değişlenin adresi pVal değişkenine atanıyor.

 

pVal 0x13df2910 0x13df2914

val 0x13df2914 5

 

 

pVal değişkenin gösterdiği hafıza alana 5 atanıyor.

 

pVal 0x13df2910 0x13df2914

val 0x13df2914 8

 

 

 

<Resim>Pointer değişkeninin kendisi de hafızadan belli bir bölge işgal eder. pointer değişkenini adresi ile göstediği adres birbiri ile karıştırılmamalıdır

 
 
  Bugün 137 ziyaretçi (213 klik) www.bilisim-egitim.tr.gg  
 
Bu web sitesi ücretsiz olarak Bedava-Sitem.com ile oluşturulmuştur. Siz de kendi web sitenizi kurmak ister misiniz?
Ücretsiz kaydol