c++引用

1.引用的特性

1. 引用在定义时必须初始化

2. 一个变量可以有多个引用

3. 引用一旦引用一个实体,再不能引用其他实体

如图,ra、rra分别是a的别名 

2.引用做参数

如图,对于交换函数,可以用指针和引用两种方法, 但是引用可以直接使用,不需要再解引用。

3.引用做返回值

 

 左图中,n为静态区变量,在引用返回时,会先放入临时变量,用ret给n起了一个别名;右图中,返回时会生产一个临时变量,把临时变量的值赋给ret。

错误示例:

 由于n是局部变量,在返回后,由于ret是n的别名,但是n已经销毁,但是ret仍然在使用该空间,会造成不确定性;

内存销毁意味着什么?

1.空间仍然在,但是使用权不是我们的,我们存的数据不被保护

2.我们仍然能访问该部分空间,但是我们读写的数据是不确定的

空间的申请和释放,就像住酒店。空间读写数据,就像在房间寄存的东西,可能还在,也可能被打扫,更有可能被新的住户拿走。

 因此我们可以得出结论:

出了函数作用域,返回变量不存在了,不能用引用返回,因为返回的结果是未定义的。

出了函数作用域,返回变量存在,才能用引用返回。

4.引用的优点

传引用返回:1.减少拷贝,提高效率。2.修改返回值。

引用做参数:1.减少拷贝,提高效率。2.输出型参数,函数中修改形参,实参也会被修改。

5.引用时的权限问题

 如图,权限可以平移,也可以缩小,但是不能放大,一般情况下,引用做函数参数都是const引用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值