17 Eylül 2008 Çarşamba

C++ Pointer ve Referans İlişkisi..


Yandaki gibi bir örnekte öncelikle a = 5 diyerek örneğin adresi FFF olan bir bellek hücresine a adını veriyor ve hücre içerisine 5 değerini yazıyoruz. &a yaparak a nın adresini yani FFF değerini elde edebiliriz.

Sonra &r = a diyerek &r içerisine a nın adresini yani FFF i aktarmış oluyoruz ki bu durumda r nin değeri de 5 oluyor. Yani FFF hücresinin adı hem a hem de r oluyor.

Sonrasında ise *p = &a diyerek bellekte örneğin adresi CCC olan bir hücreye a nın adresi olan FFF i yazıyoruz. Yani &p yi sorgularsak CCC elde ediyoruz. Ancak p yi sorgularsak CCC adresinde kayıtlı olan FFF i elde ediyoruz. *p yi sorguladığımızda ise p adındaki hücresinin yani CCC adresli hücrenin içeriğinde adresi yazan(FFF) hücrenin içeriğini sorgulamış oluyoruz ki bu da 5 oluyor.
*p = 7 dediğimizde p hücresinde(CCC) adresi yazan hücrenin(FFF yani adı hem r hem de a olan) içeriğini 7 yapmış oluyoruz. Böylece hem r yi hem de a yı aynı anda 7 yapmış olduk. Çıktı şöyle; Referans değerlere başlangıç anında atama yapılır ve sistem referansın değerini yada adresini tutmak için başka bir bellek alanı kullanmaz. Bu nedenle referanslar sonradan değiştirilemezler. Ancak pointerlar içindeki değer başka bir hücrenin adresi olan hücrelerdir ve değerleri sonrasında değiştirilebilir.

1 yorum: