Facebook'ta Paylaş
Tweetle
Google Plus'ta Paylaş

C Pointer Kullanımı

0
Konuyu Beğen
0
#1
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 bu kadar.




    C Pointer Kullanımı
Bu konuyu görüntüleyen kullanıcı(lar): 1 Ziyaretçi