引用是变量的别名,用于直接操作原变量。它必须初始化、不可重绑定、不占额外内存且不能为空。常用于函数参数和返回值以提高效率、避免拷贝,并支持连续赋值。与指针不同,引用更安全简洁,无解引用操作,不支持算术运算。

在c++中,引用(reference)是一种别名机制,它为已存在的变量提供另一个名字。引用不是新分配的内存对象,而是原变量的“别名”,通过引用操作和修改,实际上就是在操作原变量本身。
什么是引用?
引用是某个已存在变量的别名。一旦将引用初始化为某个变量,就可以使用该引用访问或修改原变量的值,效果等同于直接使用原变量。
定义引用的基本语法如下:
数据类型 &引用名 = 变量名;
例如:
立即学习“C++免费学习笔记(深入)”;
int a = 10; int &b = a; // b 是 a 的引用 b = 20; // 等价于 a = 20
此时变量 a 和 b 指向同一块内存,任何对 b 的操作都会反映到 a 上。
引用的特点
- 必须初始化:引用在声明时就必须绑定到一个变量,不能先声明再赋值。
- 不能更改绑定对象:引用一旦绑定到某个变量,就不能再指向其他变量。
- 不占用额外内存:引用通常不分配新的内存空间,只是原变量的别名。
- 不能为空:引用必须指向一个有效的对象,不能像指针那样设为 nullptr。
引用的常见用途
引用在C++中广泛用于函数参数传递和返回值,提高效率并避免不必要的拷贝。
1. 作为函数参数
使用引用传参可以避免复制大型对象(如结构体、类对象),同时允许函数修改实参的值。
void swap(int &x, int &y) { int temp = x; x = y; y = temp; }
调用 swap(a, b) 时,x 和 y 分别是 a 和 b 的引用,函数内交换的是原始变量的值。
2. 作为函数返回值
函数可以返回引用,常用于实现连续赋值或操作符重载。
int& getValue(int index) { return arr[index]; // 返回数组元素的引用 }
这样可以实现如 getValue(0) = 100; 这样的赋值操作。
3. 避免拷贝提升性能
void print(const std::string &str) { std::cout << str << std::endl; }
这样不会复制字符串内容,提高了效率,同时 const 保证了函数内不能修改原对象。
引用与指针的区别
- 引用是别名,指针是地址;引用操作更安全、直观。
- 引用必须初始化且不能改变指向;指针可以随时修改指向,也可以为空。
- 引用使用时无需解引用(不用 *),语法更简洁。
- 指针支持算术运算(如 ++、–),引用不支持。
基本上就这些。引用是C++中非常基础且重要的特性,掌握它有助于写出更高效、清晰的代码。理解引用的本质——“别名”,是正确使用它的关键。