Referans fonksiyon ile değer fonksiyon arasındaki temel fark nedir?
A) Referans fonksiyonlar daha hızlı çalışır
B) Referans fonksiyonlar parametrelerin kopyasını alır
C) Referans fonksiyonlar parametrelerin orijinalini değiştirebilir
D) Referans fonksiyonlar sadece sayısal verilerle çalışır
Bu soru, programlama dillerinde fonksiyonlara parametre geçirme yöntemlerinden ikisi olan "değer ile çağırma" (call by value) ve "referans ile çağırma" (call by reference) arasındaki temel farkı anlamamızı istiyor. Bu kavramları "değer fonksiyon" ve "referans fonksiyon" olarak adlandırmış.
Şimdi bu iki yöntemi adım adım inceleyelim:
- Değer Fonksiyon (Call by Value - Değer ile Çağırma):
- Bir fonksiyona bir değişkeni "değer ile" gönderdiğinizde, fonksiyon bu değişkenin bir kopyasını alır.
- Fonksiyonun içinde bu kopya üzerinde yapılan tüm değişiklikler, orijinal değişkeni etkilemez.
- Bunu, bir belgenin fotokopisini birine vermek gibi düşünebilirsiniz. Fotokopi üzerinde ne yapılırsa yapılsın, orijinal belge değişmeden kalır.
- Referans Fonksiyon (Call by Reference - Referans ile Çağırma):
- Bir fonksiyona bir değişkeni "referans ile" gönderdiğinizde, fonksiyon bu değişkenin bellek adresini (referansını) alır. Yani, fonksiyon doğrudan orijinal değişkenin kendisiyle çalışır.
- Fonksiyonun içinde bu referans üzerinden yapılan tüm değişiklikler, orijinal değişkeni de etkiler.
- Bunu, birine orijinal belgenin kendisini vermek gibi düşünebilirsiniz. Belge üzerinde yapılan her değişiklik, orijinali de değiştirir.
Şimdi seçenekleri bu bilgiler ışığında değerlendirelim:
- A) Referans fonksiyonlar daha hızlı çalışır: Performans farkları, kullanılan dil, derleyici optimizasyonları ve veri büyüklüğü gibi birçok faktöre bağlıdır. Her zaman referans ile çağırmanın daha hızlı olduğu söylenemez. Bu, temel bir fark değildir.
- B) Referans fonksiyonlar parametrelerin kopyasını alır: Bu ifade, "değer fonksiyonların" (call by value) özelliğidir. Referans fonksiyonlar kopyasını değil, doğrudan orijinal değişkenin kendisini (referansını) kullanır. Bu nedenle yanlıştır.
- C) Referans fonksiyonlar parametrelerin orijinalini değiştirebilir: Evet, bu referans ile çağırmanın temel ve ayırt edici özelliğidir. Fonksiyon, orijinal değişkenin bellekteki yerine eriştiği için, o değişkenin değerini değiştirebilir.
- D) Referans fonksiyonlar sadece sayısal verilerle çalışır: Hayır, referans ile çağırma yöntemi, sayısal verilerle sınırlı değildir. Diziler, nesneler ve diğer karmaşık veri yapıları da referans ile gönderilebilir.
Bu açıklamalar ışığında, referans ile çağırmanın (referans fonksiyon) en belirgin özelliği, fonksiyon içinde yapılan değişikliklerin orijinal değişkeni etkilemesidir.
Cevap C seçeneğidir.