Call by Reference-Value
Call by Reference-Value konusuna değinilen kısım.
Call by Ref-Value Nedir?
Bir değişkeni argüman olarak bir fonksiyona verdiğimizde fonksiyon prototipine göre işler değişebilir.
Örneğin bir değişkene 99
değerini atayan bir fonksiyon yazıldığını düşünürsek, karesi hesaplanması istenen değişkeni parametre olarak alıp bu işlemi yapıp değişkene geri döndürdüğünü düşünelim;
Call by Value
Bu örneğin arkaplanında olanlar şu şekildedir; Öncelikle number
adında bir int
değişkeni oluşturulur ve bu değişken square
adlı fonksiyona gönderilir. Bu fonksiyonun parametresi olan num
aldığı değer 5
olduğundan bu şekilde belleğe aldığı değerle birlikte kopyalar ve kendisini kendisiyle çarpıp döndürür ve kendisini bellekten siler.
İşte buna Call by Value denir. Fonksiyon aldığı değerin aynısını bellekte kopyalar ve fonksiyon bitiminde siler.
Peki, fonksiyon içerisinde sadece bu atamayı yapmış olsaydık ve değer return
edilmeseydi eğer yine number
değişkeni 99
olacak mı?
Bu durumda 99
olan değer sadece num
değişkeni olacaktır. Çünkü bellekte number
değişkeninin ilk başta değerini kopyalayacak ve ardından fonksiyonun içerisinde bu değere 99
değeri atanacak ve fonksiyon bitiminde de bu değer bellekten silinecektir.
Bu durumda number
değişkenini direkt olarak nasıl değiştirebiliriz?
Call by Reference
Bir pointer aracılığıyla number
değişkeninin değerini değiştirebiliriz. Bu sayede number
değişkeninin değeri bellekte kopyalanmaz ve değere pointer aracılığı ile erişip bir değişiklik yapabiliriz. Bu işleme de Call by Reference denir.
Last updated