C++学习笔记之引用(基础)

C++学习笔记之引用

https://www.runoob.com/cplusplus/cpp-references.html

引用变量是一个别名,它是已存在变量的另一个名字
一旦把引用初始化为某个变量,可以使用该引用名称或变量名称来指向变量

1、引用vs指针

引用和指针之间有一些相似,也有一定不同:
①不存在空引用,引用必须连接到一块合法的内存
②一旦引用被初始化为一个对象,就能不能被指向另一个对象,而指针可以在任何时候指向另一对象
③引用必须在创建时初始化,指针可以在任何时间初始化

还是回到引用最初的特征——“别名”,如果需要给一个人起个绰号,那么这个人首先要存在,那么引用自然不会有引用,而且别名和对象自身指向的其实是同一个东西,就比如“香帅”和楚留香其实是同一个人,这样理解是否更加形象一些呢?

而指针则是更加灵活,不像引用与变量深度绑定,更偏向于工具,是内存操作的媒介

2、创建引用

引用是变量在内存中的第二标签,也可以理解为先前所说的变量的“绰号”
因此,在引用关联到变量上之后,通过原始的变量名或者是引用二者都可以访问该变量的内容,指向的是同一块内存

int value = 18;
int &r = value;
cout << &value << endl;
cout << &r << endl;

在这里插入图片描述
在声明完引用后,引用就可以和原始变量一样使用,使用&可以将变量作为引用绑定到右值上

3、把引用作为参数

引用也可以作为函数的参数使用

void swap(int& x, int& y) {
  int temp;
  temp = x; 
  x = y;    
  y = temp;
}
int x = 10;
int y = 20;
swap(x, y);   // 内存地址的交换
cout << x << endl;
cout << y << endl;

引用的实质是内存地址,尤其是对于一些内容进行修改时
经常会涉及值传递引用传递的区别,值传递在函数结束后,并没有改变原来的值,因为参数只是被复制到函数中,操作的并不是原始的变量,因而调用结束后,没有修改传入的值;而引用则是修改的地址,因此最终改变的是地址,那么是确实修改了对应变量的内容

4、把引用作为返回值

通过使用引用来替代指针,会使 C++ 程序更容易阅读和维护
通过函数返回引用的方式与返回指针的方式非常类似
在这里插入图片描述
但是,有一点需要注意,这里和返回指针类似,局部变量需要考虑生命周期,因此不能返回局部变量引用,因为函数调用结束会面临销毁,指向它的引用就会异常,上面框出的代码是有问题的

这里同样使用static进行处理

int& updateValue(int value)
{
	static int p = 10;  // 此时是全局作用域
	int& ref = p;
	return ref;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值