C POİNTERS (GÖSTERİCİLER)

C’deki pointer öğrenmesi kolay ve eğlencelidir. Bazı C programlama görevleri pointer ile daha kolay gerçekleştirilir ve dinamik bellek ayırma gibi diğer görevler işaretçiler kullanılmadan gerçekleştirilemez. Bu nedenle, mükemmel bir C programcısı olmak için işaretçileri öğrenmek gerekli hale gelir. Bunları basit ve kolay adımlarla öğrenmeye başlayalım.

Bildiğiniz gibi, her değişken bir bellek konumudur ve her bellek konumunun, bellekteki bir adresi belirten ve işareti (&) operatörü kullanılarak erişilebilen tanımlanmış bir adresi vardır. Tanımlanan değişkenlerin adresini yazdıran aşağıdaki örneği düşünün –

#include <stdio.h>

int main () {

   int var1;
   char var2[10];

 printf(" var1 İN adres degeri : %x\n", &var1 );
 printf(" var2 NİN adres degeri: %x\n", &var2 );

   return 0;
}

Yukarıdaki kod derlendiğinde ve yürütüldüğünde, aşağıdaki sonucu verir –

var1 İN adres degeri : bff5a400
var2 NİN adres degeri: bff5a3f6

İşaretçiler nedir?


İşaretçi, değeri başka bir değişkenin adresi, yani bellek konumunun doğrudan adresi olan bir değişkendir. Herhangi bir değişken veya sabit gibi, herhangi bir değişken adresini saklamak için kullanmadan önce bir işaretçi bildirmelisiniz. İşaretçi değişken bildiriminin genel biçimi –

type *var-isim;

Burada tür, işaretçinin temel türüdür; geçerli bir C veri türü olmalı ve var-isim, işaretçi değişkeninin adıdır. İşaretçi bildirmek için kullanılan yıldız işareti *, çarpma için kullanılan yıldız işaretiyle aynıdır. Bununla birlikte, bu ifadede yıldız işareti, bir değişkeni işaretçi olarak belirtmek için kullanılmaktadır. Bazı geçerli işaretçi bildirimlerine bir göz atın –

int    *ip;    /*  integer pointer */
double *dp;    /* double pointer */
float  *fp;    /* float pointer */
char   *ch     /* karakter pointer */

Tam sayı, kayan nokta, karakter veya başka türlü tüm işaretçilerin değerinin gerçek veri türü aynıdır, bir bellek adresini temsil eden uzun bir onaltılık sayı. Farklı veri türlerinin işaretçileri arasındaki tek fark, işaretçinin işaret ettiği değişken veya sabitin veri türüdür.

İşaretçiler Nasıl Kullanılır?

Çok sık işaretçiler yardımı ile yapacağımız birkaç önemli işlem var. (a) Bir işaretçi değişkeni tanımlarız, (b) bir değişkenin adresini bir işaretçiye atarız ve (c) son olarak işaretçi değişkeninde bulunan adresteki değere erişiriz. Bu, işleneni tarafından belirtilen adreste bulunan değişkenin değerini döndüren tekli operatör * kullanılarak yapılır. Aşağıdaki örnek bu işlemlerden yararlanmaktadır –

#include <stdio.h>

int main () {

   int  var = 20;   
   int  *ip;        

   ip = &var;  

   printf("var: %x\n", &var  );

   
   printf("ip : %x\n", ip );

   
   printf("deger: %d\n", *ip );

   return 0;
}

Yukarıdaki kod derlendiğinde ve yürütüldüğünde, aşağıdaki sonucu verir –

var: bffd8b3c
ip : bffd8b3c
deger: 20

BOŞ İşaretçiler

Atanacak tam bir adresiniz yoksa bir işaretçi değişkenine bir NULL değeri atamak her zaman iyi bir uygulamadır. Bu, değişken bildirimi sırasında yapılır. NULL atanan bir işaretçi boş gösterici olarak adlandırılır.

NULL işaretçisi, birkaç standart kitaplıkta tanımlanan sıfır değerine sahip bir sabittir. Aşağıdaki programı düşünün –

#include <stdio.h>

int main () {

   int  *ptr = NULL;

   printf(" ptr : %x\n", ptr  );
 
   return 0;
}

Yukarıdaki kod derlendiğinde ve yürütüldüğünde, aşağıdaki sonucu verir –

 ptr: 0

Kaynakça

Tutorialspoint.com

Leave a Reply