Dokonaj analizy fragmentu kodu w języku C++.
#include void suma (int a, int b) {a=a+b;} void main() { int a=7, b=3, x; suma(a,b); x=a+b; }
Jaką wartość przyjmie zmienna x po wykonaniu tego fragmentu kodu? Odpowiedzi
Informacja zwrotna
W tym programie zmienna x po wykonaniu funkcji wynosi 10. To dlatego, że mamy funkcję `suma`, która przyjmuje dwa całkowite argumenty, ale nie zmienia oryginalnych zmiennych `a` i `b` w `main`. W C++ działa to tak, że argumenty są przekazywane przez wartość, co znaczy, że wszelkie zmiany w funkcji dotyczą tylko jej lokalnych kopii a nie oryginalnych wartości. Więc po wywołaniu `suma(a, b)` nasze `a` i `b` pozostają takie same. Potem, w linii `x = a + b;` mamy dodawane 7 i 3, co daje nam 10. Fajnie jest zrozumieć ten mechanizm, bo to ważne w programowaniu. Jak chcemy zmieniać coś w zmiennych, powinniśmy skorzystać z przekazywania przez referencję albo wskaźniki. To może być istotne zwłaszcza, kiedy pracujemy ze strukturami danych, gdzie zmiany powinny być widoczne poza funkcją.
#include void suma (int a, int b) {a=a+b;} void main() { int a=7, b=3, x; suma(a,b); x=a+b; } Jaką wartość przyjmie zmienna x po wykonaniu tego fragmentu kodu?
Odpowiedzi
Informacja zwrotna
W tym programie zmienna x po wykonaniu funkcji wynosi 10. To dlatego, że mamy funkcję `suma`, która przyjmuje dwa całkowite argumenty, ale nie zmienia oryginalnych zmiennych `a` i `b` w `main`. W C++ działa to tak, że argumenty są przekazywane przez wartość, co znaczy, że wszelkie zmiany w funkcji dotyczą tylko jej lokalnych kopii a nie oryginalnych wartości. Więc po wywołaniu `suma(a, b)` nasze `a` i `b` pozostają takie same. Potem, w linii `x = a + b;` mamy dodawane 7 i 3, co daje nam 10. Fajnie jest zrozumieć ten mechanizm, bo to ważne w programowaniu. Jak chcemy zmieniać coś w zmiennych, powinniśmy skorzystać z przekazywania przez referencję albo wskaźniki. To może być istotne zwłaszcza, kiedy pracujemy ze strukturami danych, gdzie zmiany powinny być widoczne poza funkcją.