在c/c++中,有个“取址符&”的运算符,很多人都知道它可以取地址,比如:
#include <iostream>
using namespace std;
int main()
{
int a = 4;
cout << &a << endl; // 输出:0x61fe1c 这个是变量 a 在内存中的地址
return 0;
}
实际上它还有一个很重要的用法:
引用类型:
在声明变量时使用 & 可以创建引用类型。引用是一个已经存在的对象的别名。
例如,int &ref = a;将ref声明为a的引用。
再详细点就是:ref 表示参数 a 的一个引用,而不是指针,也不是地址。
具体的意思就是:
int a = 5;
int &ref = a;
ref = 10; // 那么 变量 a 的值就是 10 了!
因为它是引用的 a 的地址。 swap 函数底层就是这个原理实现的。
通过下面这个代码,可以很清晰地看到 & 更高级的使用:
#include <iostream>
using namespace std;
int main()
{
int a = 5;
int &ref = a;
ref = 10;
cout << a << endl; // 输出 10,而不是 5
return 0;
}