C’de Pointer Aritmetiği – 1 (Atama İşlemleri)

Şimdi Pointer(İşaretçi) kullanarak bir değişkenin değerini güncelleyelim. Bir önceki örneklerimize benzer bir örnek üzerinden devam edelim…


#include <stdio.h>
#include <stdlib.h>

int sayi = 100;
int *ptr_sayi;

ptr_sayi = &sayi;
//Onceki ornegimizde buraya kadar olan islemleri çözümlemiştik.

//Simdi pointer uzerinden sayi degiskeninin degerini degistirelim.

*ptr_sayi ++; // Ornegin 1 arttiralim...
printf("%d",sayi);

//Degiskenin degerine ulasmak icin pointerin basina "*" karakterini koydugumuza dikkat edelim...

//Eger arttirma islemini

ptr_sayi++;
printf("%d",sayi);

//seklinde yapmis olsaydik, ptr_sayi pointerinin gosterdigi adreste tutulan degeri degil, gosterdigi adres degerini 1 arttirmis olacaktik...

//Ornegin "sayi" degiskeninin adresi A123 ise, ptr_sayi pointerinin gosterdigi adres A123 olacaktir. Bu adreste tutulan deger de 100'dur.

//Eger islemi "*ptr_sayi++" seklinde yaparsak, A123 adresinde tutulan 100 degeri bir artip 101 olacaktir. Ancak islemi "ptr_sayi++" seklinde yaparsak, bu kez ptr_sayi pointerinin gosterdigi A123 adresini A124 yapmis ve bambaska bir degiskeni ya da null bir bellek hucresini gostermeye baslamis oluruz.

//Not: Pointerlar ile yapilan guncelleme islemleri dogrudan bellek hucresini etkilediginden, o bellek hucresini temsil eden degiskenin de degerinin degismesine yol acar...

ptr_sayi--;
printf("%d",sayi);
//Yukarida bilerek yanlis yaptigimiz islemi geri alalim...

*ptr_sayi = 200;

//"sayi" degiskeninin gosterdigi adreste tutulan deger 200 yapiliyor...

printf("%d",sayi);

//"sayi" degiskeni yazdirildiginda ekrana 200 yazilacaktir. Cunku ayni adresi gosteren pointer ile bu adreste tutulan degeri 200 e guncellemistik...

Görüldüğü gibi pointer aritmetiği ile karmaşık işlemler yapmak için, hatta bir hocamın tabiriyle Pointer aritmetiğini “hamur gibi yoğurmak için” öncelikle temel pointer işlemlerinin mantığını kavramalıyız.

Pointer aritmetiği ile yapılan işlemlerde, unutacağınız bir yıldız karakteri bile tüm belleğinizi yanlış yönlendirmenize ve ciddi boyutta veri kaybetmenize sebep olabilir…

Bir sonraki yazıda pointerlar arasında matematiksel işlemler yaparak, bellek hücrelerinin ve o hücreleri temsil eden değişkenlerin değerlerini değiştireceğiz…

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Connecting to %s

%d blogcu bunu beğendi: