承接上文关于输入输出、缺省参数及重载的内容,本节深入探讨 C++ 入门的另外三个核心概念:引用、内联函数与 nullptr。
引用机制
基本概念与定义
引用并非定义新变量,而是为已存在的变量起一个别名。编译器不会为别名重新开辟空间,它与原变量共享同一块内存区域。例如将'土豆'称为'马铃薯',本质是同一个东西。语法格式如下:
类型& 别名 = 变量;
示例:
int a = 10;
int& num = a; // num 是 a 的别名
此时 num 的值与 a 一致。需注意,在 C++ 中引用符号 & 表示取别名,而非 C 语言中的取地址操作。
引用特性
- 定义时必须初始化 引用必须绑定到具体的对象,不能悬空。未初始化的引用会导致编译错误。
int a = 10;
int& num = a; // 正确
// int& num; // 错误:未初始化
通俗理解,就像给某人起外号,必须先知道是谁才能起外号。
- 一个变量可有多个引用 一个变量可以拥有多个别名,它们的地址相同。
int a = 10;
int& num1 = a;
int& word = a;
int& word2 = word;
- 引用只能绑定一个实体 一旦引用被初始化,它就不能再指向其他变量。若尝试重新绑定,会报错。
int b = 10;
int a = 20;
int& num1 = b;
// int& num1 = a; // 错误:重复声明或无法重新绑定
这保证了引用的唯一性,避免歧义。
应用场景
引用主要用于函数传参和返回值,旨在解决指针带来的复杂性与安全性问题。
场景一:函数传参优化
传统 C 语言通过值拷贝传递参数,大数据量时开销大;使用指针虽避免了拷贝,但存在空指针风险且需解引用。引用则兼顾了效率与安全。
指针交换:
void Swap(int* x, int* y) {
temp = *x;
*x = *y;
*y = temp;
}


