Reference Parameters.
/* * Here we compare two ways of passing parameters. */ #include <iostream> using namespace std; void f1(int a) { a += 10; } void f2(int &a) { a += 10; } int main() { int m = 15; cout << "m = " << m << endl; f1(m); cout << "m = " << m << endl; f2(m); cout << "m = " << m << endl; }

Normal parameters are copies of their arguments. Reference paramters (denoted with &), are aliases. Changing normal parameters does not change the argument. Changing reference parameters does.

Note that neither constants nor expressions can be sent to reference parameters. Neither of f2(33) nor f2(m+2); will compile.

Textbook: pp. 258–269