Göstericiler
Göstericiler
Göstericiler, programların referansa göre çağırma yapmasını ve bağlı listeler, sıralar, yığınlar ve ağaçlar gibi büyüyüp küçülebilen dinamik veri yapılarının oluşturulmasıyla, yönetilmesini sağlatır.
Göstericiler, değer olarak hafıza adreslerini içeren değişkenlerdir. Normalde bir değişken doğrudan kesin bir değeri içerir.
Gösterici Tanımlama
Göstericiler program içerisinde kullanılmadan önce bir değişken gibi tanımlanmalıdırlar.
int *aPtr;
aPtr değişkeni * ifadesi ile bir gösterici olarak tanımlanmıştır. Değişken tanımlama yaparken önlerine * ifadenin konulması o değişkenin gösteri olduğu söyler. Her gösterici önüne yerleştirilmelidir.
Bir göstericiye 0 yada NULL değeri atanabiliir. NULL değerine sahip bir gösterici hiçbir şey göstermez.
Gösterici Operatörü
&, operatörü scanf içerisinde kullanıcının klavyeden girdiği veriyi bir değişken atamak için kullanıyorduk.
& adres operatörü, operandının adresini döndürür.
int a=6; int *aPtr;
iki değişkeni inceleyecek olursak tamsayı tipinde bir a değişken tanımlanmış ve 6 değeri atanmıştır. İkinci tanımlamada aPtr adında gösterici tanımlanmıştır.
aPtr=&a;
yukarıda yapılan tanımlamada a‘nın bulunduğu adrese erişilmiş ve bu adres aPtr atanmıştır.
printf(“%d”,*yPtr);
yukarıda tanımlanan kod bize a’nın değeri olan 6 yı ekrana yazdıracaktır. Aşağıdaki örnekte daha detaylı inceleyelim.
#include <stdio.h> int main( ) { /* a bir tamsayıdır */ int a; /* aPtr bir tamsayiyi gösteren bir göstericidir */ int *aPtr; a = 6; /* aPtr ‘ye a’nin adresi atandi */ aPtr = &a; /* a'nin adresi yazilacaktir*/ printf( "a'nin adresi\n %p",&a); /* aPtr'nin adresi yazacak*/ printf("\n\naPtr adresi degeri\n %p",aPtr ); /* a’nin değeri yacak */ printf( "\n\n\na'nin degeri %d \n",a); /* *aPtr nin degeri yacak*/ printf("\n*aPtr nin degeri %d",*aPtr ); printf( "\n\n* ve & birbirlerinin " "eslenigidir.\n\n&*aPtr = %p \n" "\n*&aPtr = %p\n", &*aPtr, *&aPtr ); return 0; }
Yukarıdaki programda adrese ve değere erişme yöntemleri anlatılmıştır.
printf( “a’nin adresi\n %p”,&a);
16. satırındaki %p ifadesi yerine %d yazılırsa bilgisayar kafasından bir değer üretecektir.