Call by value and reference (Değer ve referans ile çağırma)
Fonksiyonlar iki şekilde çağrılabilir: Değerle veya referansa göre çağırma. Bu iki yol genellikle kendilerine parametre olarak iletilen değerlerin türü ile ayırt edilir.
Call by value: Değere göre çağırma, fonksiyona değer ilettiğinizde, fonksiyon parametresi tarafından yığın bellek konumuna yerel olarak depolanır. Fonksiyon parametresinin değerini değiştirirseniz, yalnızca geçerli fonksiyon için değiştirilir.
Örnek:
#include <iostream> #include <conio.h> using namespace std; void degistir(int x, int y) { int gecici; gecici = x; x = y; y = gecici; } int main() { int x = 16, y = 34; degistir(x, y); cout << "x değeri: " << x << endl; cout << "y değeri: " << y << endl; return 0; }
Çıktı:
x değeri: 16 y değeri: 34
Call by reference: Referansla çağrıda, referans (adres) geçtiğimiz için orijinal değer değiştirilir. Burada, değerin adresi fonksiyona geçirilir, böylece gerçek ve biçimsel argümanlar aynı adres alanını paylaşır. Bu nedenle, fonksiyonun içinde değiştirilen herhangi bir değer, fonksiyonun içine ve dışına yansıtılır.
Örnek:
#include <iostream> #include <conio.h> using namespace std; void degistir(int &x, int &y) { int gecici; gecici = x; x = y; y = gecici; } int main() { int x = 16, y = 34; degistir(x, y); cout << "x değeri: " << x << endl; cout << "y degeri: " << y << endl; return 0; }
Çıktı:
x değeri: 34 y değeri: 16