C++’da Referans ve Pointer Nedir?
Çok kullanışlı bir o kadarda önemli bir konu olan referanslardan bahsetmek istiyorum. Açık konuşmak gerekirse tek yumurta ikizi kardeşleri karıştırırken bile bu kadar acı yaşamadım. Şu güzel üniversite yıllarımın acısı pointerlara güzel sade bir şekilde bakalım.
“*” pointer demektir. Ben adres tutarım demektir ve adrese işaret etmektedir. Yani kısacası bir değişken tanımladığımızda değişkenin içerisine 10,20,”hasan”,”ali” gibi değerler atarken. Bir pointer tanımlarken bu değerleri değil de “0x7ffee740f00c10” bu biçimde adresleri tutacağız. Nereden bileceğim ben bunları üff sakın demeyin ha. Tam bu noktada imdadımıza “&” ampersand denilen bu işaretimiz karşımıza geliyor. Bir değişkenin başına & işaretini koyduğumuzda tam olarak o değişkenin adresini elimize almaktayız. Aşağıda ki örneğimize bakalım.
int sayi1 = 10; // değişken tanımladık.
int* sayi = &sayi1; // pointer verinin adressini tuttuğu için “&” işaretiyle sayi1in adresini tuttuk;
Bu saatten sonra biz “sayi” isimli pointerın işaret ettiği adresde ki veriyi değiştirirsek. Direkt olarak sayi1 değişkeninin içerisini yani 10 değerinide değiştirmiş olacağız. Yani kısacası sayi pointerı sayi1 değişkeninin adresine işare etmiş oldu.
*sayi = 20; // 10 olan sayının adresine gittik. O değeri 20 ile değiştirdik.
cout<<sayi1;
Yukarıda ki kodlarımızda ise tanımladığımız sayi isimli pointerımızın başına * işareti koyarsak. Pointerın işaret ettiği adres deki değeri görebiliriz. Örneğin ben yukarıda ki örnekte pointerın işaret ettiği adresde ki veriyi yani “10”’u 20 ile değiştirmiş bulundum.
“&” Bu sihirli karakterin bir kullanım örneğini daha gösterelim
Bu örneğin amacı ise bir adressteki veriye iki tane farklı yoldan ulaşım içindir. Ne demek istiyorum. Bir değişken oluşturduğumda ne yapıyoruz. Bir isim verip içerisine değer veriyoruz. Peki bir aynı değere 2 farklı isimle ulaşmak istersek ne olacaktır.
// referans gider malum değikene referans olur.
int& referance = sayi1;
referance = 10;
cout<<sayi1;
Yukarıda ki örnekte ise & işretini koyarak bir değişken tanımlıyoruz ben bunun adına referance demiş bulunmaktayım ve daha sonra hangi isimli değişkene işaret etmesini istediysem ona eşitlemekteyim. Bu saatten sonra referance = 500 yaparsam ona eşitlemiş olduğum sayi1 değeride 500olacaktır. Yukarıda ki kodları deneyebilirsiniz. referance = 100 yaptıktan sonra ekrana sayi1 i bastırırsanız ekrana 100 geldiğini göreceksiniz.