引用概述

今天就来讲讲引用,那什么是引用呢?引用就相当于普通变量的别名,就好像我们在学校有正经的读书名,在家又被叫做老三,啊四……

代码如下:

//方式1 使用指针

void swap1(int* a, int* b) {

int tmp;

tmp = *a;

*a = *b;

*b = tmp;

}

//方式2 使用引用 引用作为函数的参数,不需要进行初始化

void swap2(int& a, int& b) {

//int &a; -->不行

int tmp;

tmp = a;

a = b;

b = tmp;

}

int a = 666;

int& b = a;

float c = 10.2;

float& d = c;

//1.不能直接定义没有指向的别名

//int& e;

printf_s("a: %d b: %d\n", a, b);

b = 888;

printf_s("a: %d b: %d\n", a, b);

printf_s("a的地址: 0x%p b的地址: 0x%p\n", &a, &b);//0x5264ACDB

引用的定义,在普通变量名前加上取地址符&,为普通变量 int a = 666;, 取一个别名(引用)就是 int& b = a;,这个引用别名是b,指向普通变量a。

使用引用,不能直接定义没有指向的别名如前面的 int& e; ,这是编译器不支持的。

我们对 a和b 的值和地址进行打印,发现值都是666,地址都是0x5264ACDB,这有点像什么?什么?指针。对,引用的本质就是指针,和普通指针一样也有自己的空间,保存的也是地址 ,到引用只能在C++编译器中使用。

不知道的还以为讲到别的东西了,还以为指针我唠叨完了呢,哈哈哈~~

int a = 666;

int& b = a;

b = 100;//可以对别名进行值修改

int x = 100;

int y = 10;

//swap1(&x, &y);

//printf_s("x:%d y=%d\n",x, y);

swap2(x, y);

printf_s("x:%d y=%d\n", x, y);

前面有俩个函数,功能是交换俩个数值,调用swap1用传入指针实现,就不过多赘述,swap2传入的参数是引用,引用作为函数参数时不能进行初始化(有所指向),这个指针是非常相似的,这也能达到同样效果。

既然是用指针实现的,为什么不直接使用指针,这不是多此一举吗?

1.引用作为其他变量的别名而存在,因此在一些场合可以代替指针

2.引用相对于指针来说具有更好的可读性和使用性。

它不像指针那样绕来绕去,是不是更人性化啦~

如果喜欢我,可以来我公众号“笔木追海”,等你哦~

早ノ~

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容