W C++ parametr przekazany przez referencję pozwala funkcji pracować bezpośrednio na oryginalnej zmiennej, a nie na jej kopii. Oznacza się go znakiem & przy typie parametru.
Składnia
void funkcja(int &x) {
x = 10;
}
Parametr int &x oznacza, że x jest referencją do zmiennej przekazanej podczas wywołania funkcji.
Przykład:
int a = 5;
funkcja(a);
cout << a; // wypisze 10
Wartość zmiennej a została zmieniona wewnątrz funkcji.
Przekazanie przez wartość a przez referencję
Przekazanie przez wartość tworzy kopię:
void zmien(int x) {
x = 10;
}
Po wywołaniu tej funkcji oryginalna zmienna się nie zmieni.
Przekazanie przez referencję:
void zmien(int &x) {
x = 10;
}
zmienia oryginalną zmienną.
Przykład zamiany wartości
void zamien(float &x, float &y) {
float tmp;
tmp = x;
x = y;
y = tmp;
}
Dzięki referencjom funkcja może zamienić wartości dwóch zmiennych przekazanych jako argumenty. Gdyby parametry nie były referencjami, zamiana dotyczyłaby tylko lokalnych kopii, a zmienne poza funkcją pozostałyby bez zmian.