İşaretçi, programlama dillerinde bellek adreslerini saklayan değişkenlere verilen genel isim.

Bir programlama dilinde herhangi bir değişkeni tanımladığınızda hafızada ona bir yer ayrılır. İşaretçiler (pointers) bu hafıza alanlarının adreslerini tutarlar. Programlama dilinden bağımsız bir örnek vermek gerekirse. a bir tam sayı değişkeni olsun. Biz a sayısını tanımladığımızda hafızada ona bir yer ayrılır ve bu değişkene bir değer atadığımızda bu değer bu bellek alanında tutulur. Aşağıdaki örnekte a değişkenine 5 değeri atanmıştır. a değişkeninin bellek adresi ise 0x0000ffff dir (bu hexadecimal (onaltılık tabanda) bir değerdir).

Değişken adı  Bellek Alanı    Bellek Adresi
             ---------------
             -             -  
     a       -    5        -    0x0000ffff
             -             -
             ---------------

Şimdi biz i işaretçisine a değişkeninin adresini atarsak (kendisini değil adresini) bu durumda i değişkenin (veya kopyalarının) üzerinde yapacağımız her değişiklik doğrudan a değişkenini etkileyecektir.

İşaretçi adı   Bellek Alanı   Bellek Adresi
             ---------------
             -             -  
     i       - 0x0000ffff  -   0xfe371fde2
             -             -
             ---------------

Yukarıda da görüldüğü gibi işaretçi bellekte ayrı bir yer kaplamakta (kendisine ait bellek adresi var) buna karşın kendine ait bir değer içermemekte başka bir değişkenin bellek adresini saklamakta (ve dolayısı ile işaret etmektedir).

Kullanmaya uygun olan yazılım programlarında; işaretçileri kullanmak, tekrarlayan veya yineleyen veri işlemlerinin performansını önemli ölçüde artırır; örnek olarak dizeler, ağaç, başvuru çizelgesi ve kontrol tablolarında kullanılabilir ve işletim performansını artırır. Özellikle, işaretçileri kullanarak verileri kopyalama ve kayıttan çıkarma işlemlerini yapmak; işaretçilerin işaret ettiği verileri kopyalamak ve bunlara erişmek yerine zaman ve hafıza kullanımı sayısal olarak daha ucuzdur ve işletim performansını artırır.

İşaretçiler ayrıca yordamsal programlamada alt yordamlar için giriş (başlangıç) noktalarının adreslerini muhafaza etmek için kullanılır. Nesne yönelimli programlamada ise fonksiyon işaretçileri farklı metot çağrımlarını birbirine bağlamak için kullanılır; bu sanal metodların giriş noktalarını ardi ardina tutan işaretçiler listesi gibi düşünülebilir.