İçeriğe geç
parazade

Pointer Nedir?

Yayın: · Son güncelleme:

Pointer Nedir? Kısaca

Pointer (işaretçi), bir değerin kendisini değil, o değerin bellekteki adresini tutan değişkendir. Özellikle C ve C++ dillerinde belleğe doğrudan erişmek ve büyük verileri kopyalamadan aktarmak için kullanılır.

Pointer nedir?
İçindekiler
  1. Pointer nedir?
  2. Nasıl çalışır?
  3. Neden kullanılır?
  4. Nelere dikkat etmeli?

Pointer nedir?

Pointer, bir değişkenin bellekteki adresini saklayan özel bir değişkendir. Normal bir değişken "42" gibi bir değeri tutar. Pointer ise "bu değer bellekte şu adreste" bilgisini taşır. Türkçede işaretçi olarak çevrilir.

Nasıl çalışır?

Bilgisayar belleğini numaralı kutulardan oluşan uzun bir raf gibi düşünebilirsiniz. Her değişken bu kutulardan birinde durur ve her kutunun bir adresi vardır. Pointer, kutunun içindekini değil, kutunun numarasını bilir. Bu numarayı kullanarak içerideki değeri okuyabilir ya da değiştirebilirsiniz.

C dilinde bu şöyle görünür: int yas = 30; bir tam sayı tanımlar. int *p = &yas; satırı ise yas değişkeninin adresini p adlı pointer'a atar. Artık *p = 31; yazdığınızda, yas değişkeninin değeri de 31 olur. Çünkü ikisi aynı kutuya bakar.

Neden kullanılır?

Büyük bir veriyi fonksiyona kopyalamak yerine adresini vermek hem hızlı hem bellek dostudur. Bağlı liste ve ağaç gibi veri yapıları da düğümleri birbirine pointer'larla bağlar. İşletim sistemleri, sürücüler ve gömülü sistemler gibi donanıma yakın yazılımlar bu yüzden pointer'ı yoğun kullanır.

Nelere dikkat etmeli?

Pointer güçlüdür ama hataya açıktır. Hiçbir yeri göstermeyen null pointer'ı kullanmak programı çökertir. Silinmiş bir belleği gösteren sarkan pointer ise beklenmedik sonuçlara ve güvenlik açıklarına yol açabilir. Pointer kullanırken her zaman başlangıç değeri atayın ve belleği serbest bıraktıktan sonra pointer'ı null yapın.

Sıkça Sorulan Sorular

Pointer ne demek?

Pointer, İngilizcede "işaret eden" anlamına gelir. Programlamada bir verinin bellekte nerede durduğunu gösteren adres değişkenidir.

Python ve Java'da pointer var mı?

Bu dillerde pointer doğrudan kullanılmaz. Nesneler arka planda referanslarla yönetilir, ancak geliştirici adreslerle aritmetik işlem yapamaz; bu da pek çok bellek hatasını önler.

İlgili terimler

Bellek Yönetimi(Memory Management)Bellek yönetimi, bir programın çalışırken ihtiyaç duyduğu belleği ayırma, kullanma ve işi bitince geri verme sürecidir. Bu iş dile göre ya geliştirici tarafından elle ya da çöp toplayıcı gibi otomatik mekanizmalarla yapılır.C Programlama Dili(C)C, 1970'lerin başında Bell Laboratuvarları'nda geliştirilen, donanıma yakın çalışan, derlenen ve genel amaçlı bir programlama dilidir. İşletim sistemleri, sürücüler ve gömülü sistemlerde hâlâ yaygın kullanılır.HeapHeap, yazılımda iki anlamda kullanılır: programın çalışırken dinamik olarak bellek ayırdığı geniş bellek bölgesi ve en büyük ya da en küçük elemanı her zaman en üstte tutan ağaç biçimli veri yapısı.Değişken(Variable)Değişken, programlamada bir değeri bellekte saklamak için kullanılan isimli alandır. İçindeki değer program çalışırken okunabilir ve değiştirilebilir; örneğin `fiyat = 250` satırı fiyat adlı bir değişken oluşturur.Liste(List)Liste (list), programlamada birden fazla değeri sıralı tutan, eleman eklenip çıkarılabilen ve değiştirilebilen veri yapısıdır. Python'da köşeli parantezle yazılır: `meyveler = ["elma", "armut"]`.Veri Yapıları(Data Structures)Veri yapıları, verilerin bilgisayar belleğinde düzenli ve verimli biçimde saklanması ve işlenmesi için kullanılan yöntemlerdir. Dizi, bağlı liste, stack, kuyruk, ağaç, graf ve hash tablosu en bilinen örneklerdir.NullNull, programlamada bir değişkenin bilerek boş bırakıldığını, yani hiçbir değer göstermediğini belirten özel değerdir. Sıfır ya da boş metinden farklıdır; Python'da bunun karşılığı None'dır.