Wskaż stwierdzenie, które nie jest prawdziwe dla następującej definicji funkcji w języku C++.
void zamien( float &x, float &y){ float tmp; tmp = x; x = y; y = tmp; }
A. Funkcja zwraca wartość.
Dobrze. To zdanie jest fałszywe: funkcja typu void niczego nie zwraca, zamiana działa przez referencje.
B. Funkcja nie zwraca wartości.
Źle. To zdanie jest prawdziwe - typ void oznacza brak zwracanej wartości, a szukasz zdania fałszywego.
C. Funkcja posiada dwa parametry.
Źle. Zdanie jest prawdziwe - funkcja ma dwa parametry, x i y, oba typu float.
D. Funkcja odwołuje się do parametrów przez referencję.
Źle. Zdanie jest prawdziwe - znak & oznacza przekazanie parametrów przez referencję.
Pytanie z egzaminu CKE, wrzesień 2014 (arkusz E.14-X-14.08).
Nieprawdziwe jest zdanie, że funkcja zwraca wartość. Słowo
void przed nazwą oznacza, że funkcja nie zwraca niczego i nie ma w niej instrukcji return z wartością. Mimo to funkcja działa: parametry float &x i float &y są przekazane przez referencję, więc zmiana x i y wewnątrz funkcji zmienia zmienne podane przy wywołaniu. Zmienna pomocnicza tmp przechowuje pierwszą wartość, dzięki czemu zamiana nie gubi danych. Do zapamiętania: znak & w liście parametrów to referencja, a void to brak wyniku. Taką zamianę wykorzystuje na przykład sortowanie bąbelkowe; w bibliotece standardowej robi to gotowa funkcja std::swap.To pytanie z przeczeniem - szukasz zdania fałszywego, a trzy pozostałe opisy funkcji są prawdziwe. Zdanie „Funkcja nie zwraca wartości” jest zgodne z kodem, bo typem funkcji jest
void. Zdanie o dwóch parametrach także się zgadza - w nawiasie stoją x i y, oba typu float. Opis przekazania parametrów przez referencję również jest trafny, wskazuje na to znak & przy każdym z nich. Jeżeli wybrałeś któreś z tych zdań, najpewniej przeoczyłeś słowa „nie jest prawdziwe” w poleceniu. Fałszywe pozostaje tylko stwierdzenie, że funkcja zwraca wartość: wynik zamiany trafia do zmiennych wywołującego przez referencje, a nie przez return. Przy pytaniach z przeczeniem warto najpierw ocenić każde zdanie osobno jako prawdę albo fałsz. Gdyby funkcja miała zwracać wynik, jej nagłówek zaczynałby się od typu, na przykład float, a w ciele stałaby instrukcja return tmp;.