引用
概念与定义
引用不是定义新变量,而是给已存在的变量起别名。编译器不会为别名开辟新空间,它与原变量共用同一块内存区域。就像土豆和马铃薯是同一个东西一样,引用的语法如下:
类型& 别名 = 变量;
例如:
int a = 10;
int& num = a; // num 是 a 的别名
此时 num 的值与 a 一致,均为 10。在 C++ 中,& 符号用于引用时代表取别名,而非 C 语言中的取地址。
核心特性
1. 定义时必须初始化
引用必须绑定到一个有效的对象,不能悬空。
#include <iostream>
using namespace std;
int main() {
int a = 10;
int& num = a; // 正确:绑定了 a
// int& num2; // 错误:未初始化
return 0;
}
这意味着引用一旦创建就必须指向某个实体,不能像指针那样先声明再赋值。
2. 一个变量可有多个引用
一个变量可以有多个别名,它们的地址始终相同。
int a = 10;
int& num1 = a;
int& num2 = a;
// &a, &num1, &num2 输出结果一致
3. 引用只能绑定一个实体
别名一旦确定,就不能更改指向其他变量。
int b = 10;
int a = 20;
int& num1 = b;
// int& num1 = a; // 错误:重复定义或重新绑定
这保证了别名的唯一性,避免歧义。
使用场景
函数传参
C 语言通过值拷贝传递参数,大数据量(如结构体)时开销大且存在空指针风险。引用作为别名传递,避免了拷贝,同时操作更直观。


