引用(4)_2023.4.18_初见_图文介绍

982b1cfcbaba4b48943cae616a9dd2a3.png

今天结合图片讲讲我对引用的理解,欢迎大家抓虫。

 引用~给变量取别名

1.引用的性质

(1)一个变量可以有多个引用。

(2)引用在被建立时必须初始化。

(3)引用一旦引用一个实体就不能引用其他实体。

2.引用做返回值

关键点:引用是如何实现的?对变量本体取别名,然后通过别名直接抓取变量本体。

引用做返回值的优势

普通的返回值:类似于接力,中间经历了

  1. 一个函数的生命周期
  2. 建立临时变量
  3. 返回值拷贝给临时变量
  4. 临时变量的数据拷贝给ret
  5. 销毁临时变量

等一系列冗余操作。

9e0d27b25ea64ba3af1ddcb17cb4c6dd.png

(b)引用作返回值:类似于点名,引用会通过别名直接抓取变量本体拷贝给ret,直接对变量在内存中的信息进行操作。

d1b8dccf0a8144eca5e101782a20b3d7.png

ps:如果引用的本体被销毁,则引用失效,使用别名或本体名会进行野引用,类似于刻舟求剑。

3.引用时不能扩大变量权限,只能平移或缩小权限。

引用类似于给变量取外号,拷贝变量的值,继承变量的全部或部分权限。

因此当一个别名的变量本体是int类型时,不能将临时变量的值赋给它,因为临时变量有常性,赋值的同时常性也会赋予给变量导致权限扩大。除非在引用前面加上const,使别名权限最后的结果为缩小。

 e79ce90eb4534be58fc9b9327fa09ec8.png

 

4.总结与补充:

(1)基本上任何情况下都可以使用引用。

(2)引用做返回值时要谨慎,要注意函数结束后引用的变量本体是否存在,如果变量本体被销毁则不能引用。如图:正确样例把n的值放于静态区没有销毁,因此可以被引用。

b1b0b55a683e4da683b514643d41ec16.png

 (3)引用无论是做参数还是返回值,其系统运行效率都是较高的。

(4)别名在创立时可以通过const对其权限进行精准调整。

 

 

 

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值