Bu yazıda C++ için en güçlü yeteneklerden birisi olan işaretçilerden bahsedeceğiz. İşaretçiler aslında bir değişken tipidir ve içlerinde hafıza üzerindeki bazı adresleri saklarlar. Normal bir değişkenle tanımladığımız değeri bir işaretçi değişkene atarsak bu işaretçi değişken, atanılan değişkenin bellek üzerindeki adresini saklar.
Bir işaretçiyi nasıl tanımlarız?
double x = 5.0;
double *xPtr = &x;
std::cout << "The value of X is: " << x << "\n"
<< "The value of xPtr is: " << xPtr << "\n"
<< "The value of *xPtr is: " << *xPtr << std::endl;
Bir işaretçiyi tanımlamak için * işareti kullanırız. Derleyiciye, * işareti ile tanımladığımız değişkenin bir işaretçi olduğu ve bir adres değeri tutacağı bildirilir. Genel işaretçi tanımlarında değişken ismi olarak xPtr, variablePtr gibi belirlenir. Ptr kısaltması kullanmak kodun okunurluğunu artıracaktır.
Bir işaretçiye değer atama nasıl yapılır?
double *xPtr = &x;
double *yPtr = nullptr;
Bir işaretçiye bir değişkenin adresini atarken değişkenin başına & işareti koyarız ve bu işaret sayesinde değişkenin bellekteki adresine erişiriz.
Yukarda yapmış olduğumuz tanımlamaları bir resim ile ifade edecek olursak şu şeklide gösterebiliriz,
Resimden de anlaşılacağı üzere bir değişken bir değeri, bir işaretçi ise o değişkenin bellekteki adresini tutar.
Bir değişkenin değerini işaretçi yardımıyla nasıl değiştirebiliriz?
*xPtr = 9.2;
std::cout << "The value of X is: " << x << "\n"
<< "The value of xPtr is: " << xPtr << "\n"
<< "The value of *xPtr is: " << *xPtr << std::endl;
* operatörü sayesinde bir işaretçiyi referanstan ayırıp ona değer atayabiliriz. Yukarıda yazmış olduğumuz kodda yapmış olduğumuz atama sayesinde 5.0 olan değişkenin değeri 9.2 olarak değişmiştir. Ancak bellekte bulunduğu adreste bir değişiklik olmamıştır.
Bu yazıda bir işaretçi değişken nasıl tanımlanır, nasıl değer atanır ve nelere dikkat etmek gerekir bunları öğrendik. Daha detaylı bilgi için diğer yazıları okuyabilirsiniz.