Pointer Nedir ve Bellekte Nasıl Çalışır

Pointer, bir değişkenin bellekteki adresini saklayan bir değişkendir. Yani pointerın görevinin değer tutmak değil, başka bir değişkenin nerede olduğunu söylemektir.

Bellekte her veri bir adrese sahiptir. Mesela bir tamsayı değişkeni 0x7fff5fbff8ac adresinde duruyorsa, pointer o adresi tutabilir. Bunu anlamak için şu örneği düşün: bir apartmanın dairesi veri, dairenin adresi ise pointer gibi.

C ve C++'ta pointer kullanımı şöyledir:

1int x = 5; // x değişkeni, değeri 5
2int *p = &x; // p pointerı, x'in adresini tutuyor
3printf("%d", *p); // *p, x'in değerini yazdırır (5)
4printf("%p", p); // p'nin tuttuğu adresi yazdırır

Burada & operatörü "adres al" anlamına gelir, * operatörü ise "bu adresdeki değeri oku" demektir.

Reklam · TEST
AdSense Test ReklamıYazı arası (gönderi içi) · Yazı arası

Pointer neden gerekli? Çünkü dinamik bellek yönetimi, fonksiyonlar arasında veri paylaşımı ve karmaşık veri yapıları (bağlı listeler, ağaçlar) pointerlar olmadan yapılamaz. Bir fonksiyon içinde bir değişkeni değiştirmek istiyorsan, onun adresini göndermelisin.

Python ya da Java gibi yüksek seviye dillerde pointer doğrudan kullanılmaz, çünkü bu diller bellek yönetimini otomatik yapar. Ama altta yine pointer benzeri mekanizmalar çalışır.

Pointer hatası yapılırsa ciddi sorunlar olur: null pointer (boş adrese erişim) program çöktürür, buffer overflow güvenlik açığı oluşturur. Bu yüzden pointer kullanan kodlar dikkatli yazılmalı ve test edilmelidir.

Reklam · TEST
AdSense Test ReklamıGönderi altı · Görüntülü
konu hakkında tepkinizi verebilirsiniz