Atıf ile Çağırma (Call by Reference)

Yazan : Şadi Evren ŞEKER

Programlama dillerinde, fonksiyon çağırma işlemi sırasında kullanılan yöntemlerden birisidir. Farklı kaynaklarda atıf geçirme ( pass by reference ) olarak da geçmektedir. Genelde bir programlama dilinin standart çağrıma yöntemi değer ile çağırmadır (call by value) ancak gösterici (pointer) desteği olan dillerde bu standart çağırma yöntemine ilave olarak atıf ile çağırmak da mümkündür.

Bu yöntemde fonksiyona parametre (argüman) olarak bir değer geçirmek yerine bir gösterici (pointer) referansı geçirilir. Dolayısıyla fonksiyonun içindeki bir yerel değişken (local variable), fonksiyonun çağrıldığı yerdeki bir değeri göstermiş olur. Bu sayede fonksiyonda bu gösterici marifetiyle yapılan bütün işlemler fonksiyonun çağrılması sırasında parametre olarak verilen değer üzerine de etkili olur.

Örneğin aşağıda C dilinde örnek bir kod verilmiştir:

#include <stdio.h>
void f(int *p){
   *p=20;
}
int main(){
   int a=10;
   f(&a);
   printf("%d",a);
}

yukarıdaki kodda bulunan f fonksiyonuna a değişkeninin adresi (referansı) verilmiştir. Bu sayede f fonksiyonundaki parametre değişkeni olan p, a değişkeninin hafızadaki adresini göstermiş olur.

Fonksiyon içerisinde bulunan kod ile p göstericisinin atıfta bulunduğu değişkenin değeri 20 olarak değiştirilmiştir. Bunun anlamı main fonksiyonunda bulunan a değişkeninin de değerinin 20 olarak değişeceğidir.

Sonuçta yukarıdaki kod ekrana 20 basmaktadır.

Bu yazıyı beğendiyseniz, başkalarının da ilgisini çekebilirsiniz:


408 views

3 responses to “Atıf ile Çağırma (Call by Reference)”
  1. hasan galalı says:

    mrb hocam ben burada referansla cagırmayı string için gerceklemek istedim ama basaramadım yazdıgım ko asagıda

    #include “stdio.h”

    void f(char *p)
    {
    p = “helloworld”;
    printf(“%s”,p);

    }

    int main()
    {
    char dizi = “merhaba”;
    f(dizi);
    }

    bu sekilde bir kod yazdım bu bir call by reference midir yoksa yanlıs mı hocam?
    tesekkurler

  2. hasan galalı says:

    boyle bir kod yazmamın sebebi size daha once soylemistim hocamız pointerlar fonksiyon iliskisi baslıgı adı altında asagıdaki soruyu verdi

    Elimizde bir merhaba stringi olsun fonksiyon yerel bir değişkenle set edecek . Returnle değer döndürecek . Ana programda da ekranda merhabayı görmek istiyoruz .

    sizde bana bu call by reference benxiyor deyip buranın linkini vermişstiniz

    tesekkurler

  3. kodunuz hatalı ve call by reference olarak doğru değil.

    void f(char *p)
    {
       p = “helloworld”;
    }
    
    int main()
    {
       char *dizi;
       f(dizi);
       printf("%s",dizi);
    }
    

    Yukarıdaki şekilde düzeltilebilir. Ayrıca kullandığınız derleyiciye göre (compiler) malloc fonksiyonu üzerinden gösterici için (pointer) yer ayırmanız da gerekebilir.

Leave a Reply


iki + 7 =

Benzer Yazılar:

Bilgisayar Kavramları üzerinde şu anda okumakta olduğunuz 'Atıf ile Çağırma (Call by Reference)' isimli yazı 12 Jan 2009 tarihinde, saat: 01:57 'de Şadi Evren ŞEKER tarafından gönderilmiş, toplam408 defa okunmuştur.

Benzer yazıları C/C++, Programlama Dilleri kategorilerinden okuyabilirsiniz. Yazar ile irtibat kurmak için email gönderebilirsiniz. Yazıya yorum yapabilir ya da yapılan yorumları RSS 2.0 ile takibe alabilirsiniz.


Category: C/C++, Programlama Dilleri