Ликбез по ссылкам

Ссылки появились в C++ как синтаксический сахар над указателями.
Ссылку можно воспринимать как синоним переменной, как другое её имя.

Примеры:

1.

int a = 5; int &b = a; // объявление ссылки; при объявлении ссылки обязательно задать переменную, на которую она ссылается printf("%d %d\n", a, b); // выведет 5 5 a = 7; printf("%d %d\n", a, b); // выведет 7 7 b = 9; printf("%d %d\n", a, b); // выведет 9 9

2.

void f(int x, int &y){ printf("%d %d\n", x, y); y = x * x; // y — ссылка на внешнюю переменную, её изменения отражаются на переданном аргументе printf("%d %d\n", x, y); x = 20; // x — локальная переменная, её изменение видно только внутри функции printf("%d %d\n", x, y); } int main(){ int a = 7, b = 9; f(a); //f выведет: //7 9 //7 49 //20 49 printf("%d %d\n", a, b); //выведет 7 49 }

В частности, если мы хотим передать большой объект в функцию по ссылке, мы пишем: