18
Kas'10

C Pointer Kullanımı (C Programlama Dili)

Merhaba,

Bu yazımda sizlere pointer yani türkçe karşılığıyla işaretçi dediğimiz ve programlama dillerinde çok kullanılan bir komutun C’deki kullanımını anlatmaya çalışacağım.

Pointer Ne İşe Yarar?

Pointer, bizim program yazarken bellekle program arasında bağlantı kurmamızı sağlar diyebiliriz.Pointer herhangi bir değişkenin kendisi veya adresi ile işlem yapmamıza olanak sağlar.Kullanım alanı çok geniştir ve program yazarken bizlere çok kolaylıklar sağlayacaktır.

Pointer Tanımlamak

Şimdi de program içinde bir pointer’ın hangi amaçla nasıl tanımlanacağından bahsedelim.Genelde tanım yapılırken “p” veya “ptr” değişken olarak seçilir.

int *p;     //integer tipinde bir pointer tanımlamak.

Tanımlarken pointer olduğunu anlatmak amacıyla değişkenin başına * koyuyuruz.Bunun haricinde pointer tipimiz karakter vb. olabilir.Burda dikkat edilmesi gereken pointer’in işaret ettiği adreste pointer ile aynı tipte veri olmasıdır.İnteger bir veriye character tipinde pointer kullanamazsınız.

char *prt;   //karakter tipinde bir pointer tanımlamak.

Program İçinde Kullanalım

Pointer değişkenimizi iki şekilde kullanabiliriz.

1.Adresi işaret eder.

2.Bulunduğu adresteki veriyi işaret eder.

ptr=&sayi;

Bu şekilde bir tanımlama ile sayi değişkenimizin bulunduğu adresi ptr yani pointer değişkenimize atamış olduk. & işareti ise adres belirtir.Aynı scanf(“%d”,&sayi); komutundaki & gibi.
Artık başka bir satırda ptr kullanırsak sayi değişkeninin adresinden, *ptr kullanırsak sayi değişkeninin değerinden bahsetmiş olacağız.

Kısa bir örnek verecek olursak;

#include <stdio.h>

main(){

  int sayi,*ptr;

  sayi=5;

  ptr=&sayi;

    printf("sayinin degeri = %d \n",*ptr);

    printf("sayinin adresi = %d \n",ptr);

    printf("sayinin degeri = %d \n",sayi);

    printf("sayinin adresi = %d \n",&sayi);

getchar();getchar();

}

/*

çıktısı :

sayinin degeri = 5

sayinin adresi = FF00DE

sayinin degeri = 5

sayinin adresi = FF00DE

*/

Pointer İle Dizilerin Benzerliği

Diziler de yine pointer’lar gibi bellekten kendine bir adres alır ve istenildiğinde bu adresler sayesinde dizi ile işlem yapılabilir.Bir dizi tanımlarsak dizi değişkenini kullanarak yapabileceğimiz tüm işlemleri pointer ile halledebiliriz.Tek yapmamız geren dizinin ilk elemanının adresini pointer değişkenimize atamak.Örneğin:

int *ptr, A[10];

ptr=&A[0]; //dizinin ilk elemanının adresi pointer'a atandı.

Bu atamayı yapmamızın değişik bir şekli daha var,

ptr=A; //dizinin ilk elemanının adresi pointer'a atandı.

Artık dizinin ilk elemanının adresini bildiğimize göre ptr değişkenini arttırarak veya azaltarak diğer elemanlara erişebiliriz.
NOT: ptr–  bir önceki elemanın bulunduğı adrese gider. ptr++ bir sonraki elemanın bulunduğu adrese gider.

*ptr++ ile o adresteki değeri, ptr++ ile de adresi bir arttırmış oluyoruz.Bu kullanımın ne anlama geldiğine dikkat etmek lazım

Şimdilik benden bu kadar.Pointer ile ilgili örnekler paylaşmaya çalışacağım.Herkese kolay gelsin.

  • tuncer

    helal

Yeni makaleleri E-Mail ile takip edin!