Przejdź do treści głównej
INF.04Pytanie #329 z 856jezyk-cpp-skladnia-i-pamiec

W wyniku wykonywania kodu języka C++ została wyświetlona wartość 0 (zamiast 50). Jaki jest tego powód?

Opcje odpowiedzi:
A
Działanie wewnątrz funkcji jest zapisane niepoprawnie.
B
Argument funkcji został przekazany przez wartość, a nie przez referencję.
Prawidłowa
C
Funkcja zwraca wartość, a nie powinna jej zwracać.
D
Zmienna x powinna być inicjowana wartością wynoszącą 1 a nie 0.
Reklama

Wyjaśnienie i uzasadnienie dydaktyczne

Poprawna odpowiedź: B

Uzasadnienie i szersze wyjaśnienie:

W języku C++, domyślnym sposobem przekazywania argumentów do funkcji jest przekazywanie przez wartość (pass-by-value). Oznacza to, że funkcja oblicz nie otrzymuje oryginalnej zmiennej x z funkcji main, ale jej kopię.

  1. W funkcji main tworzona jest zmienna x o wartości 0.
  2. Podczas wywołania oblicz(x), wartość 0 jest kopiowana do parametru x wewnątrz funkcji oblicz.
  3. Operacja x = x + i; (x = 0 + 50;) modyfikuje tylko lokalną kopię x wewnątrz funkcji oblicz.
  4. Oryginalna zmienna x w funkcji main pozostaje nietknięta i przez cały czas ma wartość 0.
  5. Instrukcja std::cout << x; w funkcji main wyświetla wartość swojej lokalnej zmiennej x, czyli 0.

Aby funkcja mogła modyfikować oryginalną zmienną, jej argument musiałby być przekazany przez referencję (int oblicz(int &x)) lub przez wskaźnik (int oblicz(int *x)).

Dlaczego pozostałe odpowiedzi są nieprawidłowe?

  • A: Działanie wewnątrz funkcji jest zapisane poprawnie składniowo.
  • C: Fakt, że funkcja zwraca wartość, nie ma wpływu na to, co dzieje się ze zmienną x w funkcji main.
  • D: Wartość początkowa x nie ma znaczenia dla samego mechanizmu przekazywania przez wartość.

Chcesz poćwiczyć całą kwalifikację INF.04?

Egzamin próbny na czas, nauka działami, losowe pytanie albo przegląd całej bazy — wszystko w przeglądarce i bez zakładania konta.

Rozwiąż w Quizie

Pojęcia z tego pytania

Cały słownik INF04
Reklama

Podobne pytania z działu „Jezyk cpp skladnia i pamiec”

Ten sam obszar materiału z kwalifikacji INF.04. W całej bazie znajdziesz 25 pytań z tego działu.