C++'da göstericiler(pointers) memory address belirtir. Veri'nin saklandığı yere işaret eder. Değişkenler bir verinin tuttuğu değeri belirtirken, göstericiler bir veriyi tutan değişkenlerin adresini içerir.
Pointer'ların olduğu her dilde olduğu gibi C++'da da bir gösterici tanımlamak için bildirimi yapılmalıdır, bu değişken isminin önüne yıldız(*) işareti konarak yapılır.
<type> *[pointer_name] şeklinde tanımlanabilir. Örnek olarak;
int p1; // Bir gösterici değildir.
int *p2 // Başına * koyarak belirttiğimiz için bir göstericidir.
int p3, *p4 // p4 bir gösterici fakat p3 bir gösterici değildir.
& Operator
& ifadesi adres operatörüdür. Bir değişkene atanıp kullanılabilir. Örneğin;
int n1 = 20;
int *p1;
p1 = &n1
Bu durumda p1 bize n1'in bellekte tuttuğu adresi verecektir.
Şekildeki gibi.
Tabi ki gerçekte adresler bellekte bu şekilde tutulmaz o yüzden beraber bir örnek yapalım ve görelim.
Gördüğünüz gibi çıktımız bu şekilde. p1'in değeri adres belirtirken; gösterdiği yerdeki aldığı değişken 20. Yani * operatörü kullanıldığında gösterdiği yerdeki değişkeni döndürür.
Pointer Arithmetic
C++'da pointerlar ile dolaylı olarak adreslerle tamsayı türünden işlemler yapmak mümkün (aynı tür adresler için karşılaştırma operatörü de kullanılabilir). Örnek olarak bir pointer'ın değeri 1 arttığında pointer'ın tuttuğu değişkenin bellekte kapladığı yer kadar yer atlar. Ne demek istiyorum?
int veri tipi bellekte 4 byte'lık yer tuttuğu için bellekte 4 yer atlamış oldu.
Göstericiler ile ilgili değinebileceğimiz daha çok şey var, onları da diğer bölümlere bırakıyorum.
Hata veya eksik bilgi varsa lütfen belirtin.