Referans Fonksiyonu Nedir? Test 1

Soru 04 / 10

Aşağıdaki kod parçacığında, 'degistir' fonksiyonu 'sayi' değişkenini nasıl etkiler? ```cpp void degistir(int &x) { x = x * 2; } int main() { int sayi = 5; degistir(sayi); // sayi değeri nedir? } ```

A) 5
B) 10
C) Değişmez, çünkü fonksiyon değer kopyasıyla çalışır.
D) Derleme hatası verir.

Bu soruda, C++'taki fonksiyonlara referans ile parametre geçirme konusunu anlamamız gerekiyor. Adım adım inceleyelim:

  • Öncelikle main fonksiyonuna bakıyoruz. Burada int sayi = 5; satırı ile sayi adında bir tam sayı değişkeni oluşturuluyor ve başlangıç değeri olarak $5$ atanıyor.

  • Daha sonra degistir(sayi); satırı ile degistir fonksiyonu çağrılıyor. Bu noktada sayi değişkeni, degistir fonksiyonuna parametre olarak gönderiliyor.

  • Şimdi degistir fonksiyonunun tanımına bakalım: void degistir(int &x). Buradaki kilit nokta int &x ifadesidir. Ampersant (&) işareti, x'in bir referans parametresi olduğunu gösterir. Bu, x'in aslında main fonksiyonundaki sayi değişkeninin bir takma adı (alias) olduğu anlamına gelir. Yani, degistir fonksiyonu içinde x üzerinde yapılan herhangi bir değişiklik, doğrudan main fonksiyonundaki sayi değişkenini etkiler.

  • Fonksiyonun içinde x = x * 2; satırı çalışır. x'in başlangıç değeri (yani sayi'nin değeri) $5$ olduğu için, bu işlem $5 * 2 = 10$ sonucunu verir. Bu $10$ değeri, x'e atanır. x bir referans olduğu için, bu atama doğrudan main fonksiyonundaki sayi değişkeninin değerini $10$ olarak günceller.

  • degistir fonksiyonu tamamlandığında, main fonksiyonuna geri dönülür. Bu noktada sayi değişkeninin değeri artık $10$'dur.

  • Bu durumda, sayi değişkeninin son değeri $10$ olacaktır.

  • A seçeneği ($5$) yanlıştır, çünkü fonksiyon referans ile geçiş sayesinde sayi değişkeninin değerini değiştirdi.

  • C seçeneği ("Değişmez, çünkü fonksiyon değer kopyasıyla çalışır") yanlıştır. Fonksiyon parametresindeki & işareti, bunun referans ile geçiş (pass by reference) olduğunu gösterir, değer kopyası (pass by value) değil. Eğer int x olsaydı değer kopyası olurdu ve sayi değişmezdi.

  • D seçeneği ("Derleme hatası verir") yanlıştır. Verilen kod parçacığı sözdizimsel olarak doğrudur ve herhangi bir derleme hatası vermez.

Cevap B seçeneğidir.

↩️ Soruya Dön
✨ Konuları Gir, Yapay Zeka Saniyeler İçinde Sınavını Üretsin!
1 2 3 4 5 6 7 8 9 10
Ana Konuya Dön:
Geri Dön