Przekazywanie parametrów przez referencję (w wielu językach opisywane też jako "przez odwołanie") polega na tym, że do funkcji trafia nie kopia wartości, lecz odwołanie do istniejącej zmiennej/obiektu. W praktyce oznacza to, że parametr funkcji "wskazuje" na ten sam byt, którego użyto w wywołaniu.
Dlatego poprawne jest stwierdzenie: "modyfikowanie wartości zmiennych znajdujących się poza tą funkcją." Jeżeli funkcja zmieni przekazany parametr, to może zmienić również stan zmiennej po stronie wywołującej (np. zwiększyć licznik, uzupełnić strukturę, ustawić wynik w przekazanym argumencie).
Dlaczego pozostałe odpowiedzi są błędne?
- "usuwanie zmiennych dynamicznych" – zwalnianie pamięci to osobny mechanizm (zarządzanie pamięcią), zależny od języka i sposobu alokacji. Sam fakt przekazania przez referencję nie "usuwa" nic automatycznie.
- "przypisanie parametrom wartości typu rzeczywistego" – referencja nie dotyczy konkretnego typu (rzeczywistego) i nie narzuca konwersji. Parametry mogą mieć różne typy; istotą jest sposób przekazania (kopiowanie vs odwołanie), a nie typ liczbowy.
- "komunikowanie się z drukarką" – to zagadnienie wejścia/wyjścia i sterowników/urządzeń, niezwiązane bezpośrednio z semantyką przekazywania argumentów do funkcji.
Wskazówka egzaminacyjna: jeśli w odpowiedziach pojawia się możliwość zmiany danych wywołującego, to jest to typowy skutek przekazania przez referencję (w odróżnieniu od przekazania przez wartość, gdzie modyfikowana jest tylko kopia).