目录
引用的概念
引用在实际代码中的作用
引用的特性
1. 引用在定义时必须初始化
2. 一个变量可以有多个引用
3. 可以给别名再次取别名,或者多次取别名
4. 引用一旦引用了实体,就不能再引用其他实体了
引用的概念
引用不是新定义一个变量,而是给已存在的变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间
引用的关键字:
&
引用的基本语法:
int a = 0;
int& b = a;
在内存中开辟了一块空间,这块空间的名字为 a,并且在这块空间里存储了 0 这个值
b 就是 a 取的别名,b 也指向这块空间
验证是否是指向同一块空间(打印a、b变量的地址):
可以看到,确实是指向了同一块空间
那么对变量 b 自增 1 ,变量 a 是否也会自增 1 呢
代码测试:
由此再一次证明了 b 是 a 的别名,b 和 a 指向了同一空间
引用在实际代码中的作用
代码演示:
void Swap(int& a, int& b)
{
int tmp = a;
a = b;
b = tmp;
}
比如说在交换函数中,就可以不用再像 C语言 那样,形参用指针接收,再对指针解引用才能进行交换,而是可以直接利用引用,给要交换的两个变量取别名,就能直接交换了
代码验证:
引用的实际用途还有很多,在之后的学习中会频繁使用,这里就不过多举例
引用的特性
1. 引用在定义时必须初始化
int& ra; //该条语句编译时会出错
2. 一个变量可以有多个引用
int a = 0;
int& ra = a;
int& rra = a;
代码验证:
3. 可以给别名再次取别名,或者多次取别名
int a = 0;
int& ra = a;
int& rra = ra;
int& rrra = rra;
代码验证:
4. 引用一旦引用了实体,就不能再引用其他实体了
int a = 0;
int& ra = a;
int x = 1;
ra = x; //这里是赋值
ra 是作为 a 的别名,而 ra = x 的意思是把 x 的值赋值给 ra,并不是更改 ra 的别名指向
代码验证:
打印地址和变量的值也可以看出来,a 和 ra 的地址还是一样的,且 ra 被赋值为 1 后, a 也跟着变为了 1