Merhaba sevgili öğrenciler!
Bu soruda, C++ dilinde bir fonksiyonun parametre geçirme yöntemlerinden biri olan "referans ile geçirme" (pass by reference) konusunu inceliyoruz. Kodun adım adım nasıl çalıştığını anlayalım:
- `int main() { ... }` bloğu: Programın çalışmaya başladığı ana fonksiyondur.
- `int x = 10;`: `main` fonksiyonu içinde `x` adında bir tam sayı değişkeni tanımlanır ve başlangıç değeri olarak `10` atanır. Bu noktada `x`'in değeri `10`'dur.
- `arttir(x);`: Burada `arttir` fonksiyonu çağrılır ve `x` değişkeni bu fonksiyona argüman olarak gönderilir.
- `void arttir(int &sayi) { ... }`: Bu, `arttir` fonksiyonunun tanımıdır. Dikkat etmemiz gereken en önemli kısım `int &sayi` ifadesidir.
- Buradaki `&` işareti, `sayi` parametresinin bir referans olduğunu belirtir. Yani `sayi`, `main` fonksiyonundan gönderilen `x` değişkeninin kendisinin bir takma adıdır (alias). `sayi` üzerinde yapılan herhangi bir değişiklik doğrudan `x` değişkenini etkiler.
- Eğer `&` olmasaydı (`int sayi` şeklinde olsaydı), `sayi` `x`'in bir kopyası olurdu ve `sayi` üzerinde yapılan değişiklikler `x`'i etkilemezdi.
- `sayi++;`: `arttir` fonksiyonunun içinde `sayi` değişkeninin değeri bir artırılır. `sayi`, `x`'in referansı olduğu için, bu işlem aslında `x`'in değerini bir artırır.
- `x`'in değeri `10` idi.
- `sayi++` işlemi sonucunda `x`'in değeri `11` olur.
- `arttir` fonksiyonu tamamlandıktan sonra program `main` fonksiyonuna geri döner. Bu noktada `x` değişkeninin değeri artık `11`'dir.
Bu açıklamalara göre, `arttir` fonksiyonu çağrıldıktan sonra `x` değişkeninin değeri `11` olur.
Cevap B seçeneğidir.