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

函数返回值当引用目录

一.若返回变量为栈变量

1.例子

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

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

运行结果:

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

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

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

3.不能作为左值

运行结果:

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

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

1.列子

static只初始化一次变量哦.

2.即可左值也可右值

运行结果:

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

三.若返回变量为形参

1.普通形参

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

2.引用形参

左右值都可以作.

四.结论

  • 要看返回值引用的变量的生命周期
  • 像局部就不能对其作为左值和其他引用的初始值,但是可以返回给普通变量赋值
  • 像全局的就可以作为左值和右值
相关推荐
_Kayo_33 分钟前
node.js 学习笔记3 HTTP
笔记·学习
fouryears_234171 小时前
Flutter InheritedWidget 详解:从生命周期到数据流动的完整解析
开发语言·flutter·客户端·dart
我好喜欢你~2 小时前
C#---StopWatch类
开发语言·c#
lifallen3 小时前
Java Stream sort算子实现:SortedOps
java·开发语言
IT毕设实战小研3 小时前
基于Spring Boot 4s店车辆管理系统 租车管理系统 停车位管理系统 智慧车辆管理系统
java·开发语言·spring boot·后端·spring·毕业设计·课程设计
快乐的划水a3 小时前
组合模式及优化
c++·设计模式·组合模式
CCCC13101634 小时前
嵌入式学习(day 28)线程
jvm·学习
cui__OaO4 小时前
Linux软件编程--线程
linux·开发语言·线程·互斥锁·死锁·信号量·嵌入式学习
星星火柴9364 小时前
关于“双指针法“的总结
数据结构·c++·笔记·学习·算法
小狗爱吃黄桃罐头4 小时前
正点原子【第四期】Linux之驱动开发篇学习笔记-1.1 Linux驱动开发与裸机开发的区别
linux·驱动开发·学习