📌 C++ 引用(Reference)详解笔记
🧠 1. 什么是引用?
- 引用是 变量的别名。
- 声明一个引用变量后,它和原变量绑定在一起,共用同一块内存。
- 引用一旦绑定,不能更改为其他变量。
📘 2. 引用的基本语法
int a = 10;
int& ref = a; // ref 是 a 的引用(别名)
ref = 20; // 实际上是修改 a 的值
输出:
std::cout << a << std::endl; // 输出 20
std::cout << ref << std::endl; // 输出 20
✅ 说明:
ref
和a
实际上是同一个变量,两者操作互通。
✅ 3. 引用 vs 指针 对比
比较点 | 引用(Reference) | 指针(Pointer) |
---|---|---|
语法简洁 | 是 | 否 |
必须初始化 | 是 | 否(可为 nullptr) |
可否改变指向 | 否(绑定后不可更改) | 是(可以指向别处) |
可否为 null | 否 | 是 |
支持运算 | 否 | 是(可以加减) |
📘 4. 引用的常见用法
🔹 4.1 函数参数传引用(节省内存、可修改实参)
void add(int& x) {x += 1;
}int a = 5;
add(a); // a 变为 6
✅ 使用引用可以避免复制,提高效率。
🔹 4.2 函数返回引用(可用于链式赋值)
int& getElement(int arr[], int index) {return arr[index];
}int nums[3] = {1, 2, 3};
getElement(nums, 1) = 10; // 修改第二个元素
⚠️ 5. 注意事项
-
引用必须在定义时初始化:
int& r; // ❌ 错误!必须初始化
-
一旦绑定就不能更换:
int a = 10, b = 20; int& r = a; r = b; // 修改 a 的值为 20,而不是让 r 引用 b!
🧪 6. 示例:指针和引用一起用
void update(int* ptr, int& ref) {*ptr = 100;ref = 200;
}int a = 1, b = 2;
update(&a, b);// a = 100(通过指针)
// b = 200(通过引用)
📚 7. 总结
- 引用是 C++ 引入的“语法糖”,让变量操作更安全更清晰。
- 常用于函数参数/返回值传递,尤其适用于大型结构体、对象。
- 它不具备指针的灵活性,但更安全、语义更明确。
🧩 建议:在不需要空指针和地址运算时,优先使用引用 而不是指针。