İşaretçi (bilgisayar programlama)

Programlama dillerinde işaretçi, bellek adresi tutmak için tasarlanmış bir türdür.

İşaretçiyi anlamada, bir benzetim olarak kitap ayracı örneği verilebilir. Ayraç bir kitap sayfasına yerleştirilir, burada sayfa numarası bir bellek adresi, ayraç ise bir işaretçidir. Sayfa içeriğine erişmek için doğrudan ayracın bulunduğu sayfa açılabilir.

Bir değişken tanımlandığında, bellekte ona bir yer ayrılır. İşaretçiler bu bellek alanının başlangıç adresini tutar. a tam sayı değişkeni tanımlandığında, atandığı adresin başlangıcından değişkenin türünün boyu kadar bellekte yer kaplar. Değişkene atanan değer, ayrılan bu bellek alanında tutulur.

 Değişken Adı Bellek Alanı Bellek Adresi C Kodu a 5 0x0000ffff int a = 5;

İşaretçi türünde bir pIa (pointer to integer a, a'yı gösteren bir tam sayı işaretçisi) değişkeni tanımlanır ve a değişkeninin adresi atanırsa, pIa a'nın adresini değer olarak tutar:

 Değişken Adı Bellek Alanı Bellek Adresi C Kodu pIa 0x0000ffff 0xfe371fde2 int* pIa = &a;

a değişkeninde yapılan her değişiklik, pIa işaretçi değişkenine görünür. İşaretçi kullanılarak a'nın değeri okunabilir veya değiştirilebilir.

 Değişken Adı Bellek Alanı Bellek Adresi C Kodu a 23 0x0000ffff *pIa = 23;

Türünden bağımsız olarak bir işaretçi değişkeninin değeri her zaman bir sayıdır (bir bellek adresi). İşaretçinin türü, tutulan adresteki verinin nasıl yorumlanacağını belirtir. Buna göre int* türündeki pIa, tuttuğu adresteki veriyi int olarak yorumlayacaktır.

Bu durumun bir istisnası void* dır. void* türündeki bir değişken, bir adres tutar fakat bu adresteki veriyi yorumlamaz, kullanıcının istediği türde cast kullanması beklenir.

İşaretçiler, dinamik bellek tahsisi, özyinelemeli veri yapısı gerçeklenimi, büyük boydaki veriye hızlı erişim, hafızada ardışık (sequential) tutulan verilerin iterasyonu, nesne yaşam süresi işlemleri, donanım adresine erişim gibi pek çok yerde karşımıza çıkar.

Dış bağlantılar
PL/I List Processing Paper from the June, 1967 issue of CACM
cdecl.org A tool to convert pointer declarations to plain English
Over IQ.com A beginner level guide describing pointers in a plain English.
Pointers and Memory Introduction to pointers – Stanford Computer Science Education Library
Pointers in C programming  A visual model for the beginners in C programming
0pointer.de A terse list of minimum length source codes that dereference a null pointer in several different programming languages
"The C book" – containing pointer examples in ANSI C
.

Kategori:İlkel veri tipleri
Kategori:Amerika Birleşik Devletleri icatları