Podręcznik

6. Funkcje

6.4. Funkcje z referencjami jako parametry.

Przekazywanie parametrów przez referencję w C++ to technika, która pozwala na efektywne przekazywanie zmiennych do funkcji bez konieczności ich kopiowania. Dzięki temu modyfikacje dokonane na parametrach w funkcji mają bezpośredni wpływ na oryginalne zmienne, które zostały przekazane jako argumenty. Aby zademonstrować przekazywanie parametrów przez referencję możemy wrócić do przykładu zademonstrowanego w poprzednim podrozdziale (Funkcje z parametrami), który miał na celu pokazać, że parametry są domyślnie przekazywane przez wartości.

#include <iostream>

using namespace std;

void zwieksz(int a){
    a++;
}

int main() {

    int x = 1;
    zwieksz(x);
    cout<<"Wartosc zmiennej x="<<x<<endl;
    return 0;
}
Jeżeli chcemy, aby w przedstawionym przykładzie wartość przekazana do funkcji zmieniła wartość musimy przekazać ją w inny sposób. W jaki sposób przekazać wartość przez referencję pokazana w przykładzie poniżej.
    
Deklaracja parametrów przekazywanych przez zmienną jest podobna do deklaracji parametrów przekazywanych przez wartość. Aby poinformować kompilator, że chodzi o referencję do zmiennej, a nie o nową zmienną - umieszcza się przed nazwą zmiennej znak ampersand &:

typ_zwracany nazwa (typ_p1 &p1, typ_p2 &p2, ..., typ_pn &pn);
    
gdzie p1, p2 ... są nazwami parametrów odpowiednich typów.
W zasadzie nie ma różnicy, czy zapiszecie znak referencji przed nazwą parametru, czy też za nazwą typu parametru, czyli zapisy
int& parametr
oraz
int &parametr
są sobie zupełnie równoważne (przynajmniej w przypadku deklaracji listy parametrów funkcji).