Passing Pointers as Parameters

Kategori: C , 23 Haziran 2019 , JanFranco


Pointerların en çok fayda sağladığı kısma geldik. Normalde bir değişkeni fonksiyona gönderdiğimizde, o değişkenin bir kopyası oluşturulur ve tüm işlemler o değişken üzerinde yapılır. Pointerları kullanmadan bir örnek gösterelim:

void increment(int i){
    i = i + 1;
}

int main(){
    int i = 10;
    printf("i is %d\n", i);
    increment(i);
    printf("i is %d\n", i);
    return 0;
}

Bu kodlar çalıştırıldığında ekrana 10, 10 basılır. Çünkü değeri 10 olan i değişkenini fonksiyona gönderdiğimizde, fonksiyonda local bir kopya oluşturulur ve kopyaya +1 işlemi uygulanır ve kopyanın değeri 11 olur. Ancak o bir kopyadır ve main fonksiyonundan return yapılmadan erişilemez. Peki burada pointerları kullanırsak ne olur?:

void increment(int *p){
    *p = *p + 1;
}

int main(){
    int i = 10;
    printf("i is %d\n", i);
    increment(&i);
    printf("i is %d\n", i);
    return 0;
}

Burada ekrana 10, 11 basılır. Burada yapılan işlemi özetlemek gerekirse, bir i değişkeni oluşturduk integer tipinde ve değerini 10 olarak atadık. Daha sonra bu i değişkeninin adresini fonksiyona gönderdik. Fonksiyonun parametresi integer-pointer olarak oluşturulmuş. Biz adresi gönderdiğimizde p pointer'ı artık i'yi göstermiş oldu. *p = *p + 1 işlemini yaptığımızda aslında i'nin değerini 1 artırmış olduk.


Sonraki Yazı: Structures
Yorumlar

Henüz bir yorum bulunmuyor.
Yorum bırakın