【C++11及其特性】函数返回值当引用

函数返回值当引用目录

一.若返回变量为栈变量

1.例子

返回的是局部变量的引用,这里用的二级指针可以将i的地址拿到函数外.

2.不能成为其他引用的初始值

运行结果:

因为引用的是局部变量,当我调用一下其他函数时,原来指向地址的值就发生了变化.

原因是局部变量调用完应该是自动释放了,但是我demo1分配的栈空间就是刚刚释放的,刚好是原来的地址,所有我这里调用值就发生了变化.

dem1什么也没有做,只是调用一下.

3.不能作为左值

运行结果:

结果一样,也发生了变化!

二.若返回变量为静态变量或全局变量

1.列子

static只初始化一次变量哦.

2.即可左值也可右值

运行结果:

即使我调用了demo1,结果函数没有改变.

三.若返回变量为形参

1.普通形参

跟局部变量一样,不能作为左值和初始化引用.

2.引用形参

左右值都可以作.

四.结论

  • 要看返回值引用的变量的生命周期
  • 像局部就不能对其作为左值和其他引用的初始值,但是可以返回给普通变量赋值
  • 像全局的就可以作为左值和右值
相关推荐
板栗妖怪11 分钟前
内网穿透之EW使用、判断服务器是否出网
学习·内网渗透
Ajiang282473530441 分钟前
贪吃蛇项目实现(C语言)——附源码
c语言·开发语言
guicai_guojia1 小时前
面试题篇: 跨域问题如何处理(Java和Nginx处理方式)
java·开发语言·nginx
鼠鼠龙年发大财1 小时前
fly专享
开发语言·php
hunandede1 小时前
直播相关02-录制麦克风声音,QT 信号与槽,自定义信号和槽
开发语言·qt
lzb_kkk2 小时前
【Redis】redis5种数据类型(哈希)
开发语言·redis·算法·缓存·哈希算法
Good_tea_h3 小时前
如何实现Java中的多态性
java·开发语言·python
格林威3 小时前
Baumer工业相机堡盟工业相机如何通过BGAPISDK使用短曝光功能(曝光可设置1微秒)(C语言)
c语言·开发语言·人工智能·数码相机·计算机视觉
老身聊发少年狂3 小时前
R语言xlsx,txt文件处理:以《书摘》00年-10年资源合集整理为例
开发语言·r语言
为为-180-3121-14553 小时前
R语言的Meta分析【全流程、不确定性分析】方法与Meta机器学习技术应用
开发语言·r语言