ID: 2854 OOP - Podstawy Łatwe

Źródło: Arkusze CKE

Dlaczego w wyniku działania tego kodu w języku C++ na ekranie pojawiła się wartość 0 zamiast 50?

int oblicz(int x) {
int i = 50;
x = x + i;
return i;
}

int main() {
int x = 0;
int wynik = oblicz(x);
std::cout << x;
}

Warianty odpowiedzi

  1. A

    Argument funkcji został przekazany przez wartość, a nie przez referencję.

  2. B

    Funkcja zwraca wartość, chociaż nie powinna jej zwracać.

  3. C

    Niepoprawnie zdefiniowano działanie wewnątrz funkcji.

  4. D

    Zmienna x powinna być inicjowana wartością równą 1, a nie 0.

Wyjaśnienie

Przeanalizujmy, jak zmienne są przekazywane do funkcji.

W nagłówku funkcji parametr x jest przekazywany przez wartość. Oznacza to, że funkcja oblicz dostaje jedynie kopię liczby podanej w main. Modyfikacja x = x + i zachodzi wyłącznie na tej kopii i nie ma żadnego wpływu na oryginalną zmienną x z funkcji main.

W main zmienna x cały czas zachowuje swoją pierwotną wartość, czyli 0.

Gdybyśmy chcieli zmodyfikować oryginał, musielibyśmy przekazać parametr przez referencję.

Sprawdź się w praktyce

Rozwiąż pełny test próbny INF.04 albo wylosuj pojedyncze pytanie na szybką powtórkę.

Podobne pytania — OOP - Podstawy