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

函数返回值当引用目录

一.若返回变量为栈变量

1.例子

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

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

运行结果:

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

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

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

3.不能作为左值

运行结果:

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

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

1.列子

static只初始化一次变量哦.

2.即可左值也可右值

运行结果:

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

三.若返回变量为形参

1.普通形参

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

2.引用形参

左右值都可以作.

四.结论

  • 要看返回值引用的变量的生命周期
  • 像局部就不能对其作为左值和其他引用的初始值,但是可以返回给普通变量赋值
  • 像全局的就可以作为左值和右值
相关推荐
顾琬清6 分钟前
Linux系统Docker部署开源在线协作笔记Trilium Notes与远程访问详细教程
开发语言·后端·golang
rigidwill6666 分钟前
LeetCode hot 100—子集
数据结构·c++·算法·leetcode·职场和发展
心之所想,行之将至6 分钟前
零基础开始学习鸿蒙开发-智能家居APP离线版介绍
学习·智能家居·harmonyos
汤米粥12 分钟前
FastAdmin和thinkPHP学习文档
学习·thinkphp·fastadmin
viperrrrrrrrrr723 分钟前
大数据学习(104)-clickhouse与hdfs
学习·clickhouse
周不易24 分钟前
ubuntu20.04+qt5.12.8安装serialbus
开发语言·c++·qt·modbus·serialbus
嘤国大力士28 分钟前
C++11&QT复习 (十七)
开发语言·c++·qt
细心的莽夫1 小时前
Docker学习笔记
运维·笔记·后端·学习·docker·容器
.格子衫.1 小时前
008二分答案+贪心判断——算法备赛
开发语言·c++·算法
小蒜学长1 小时前
机动车号牌管理系统设计与实现(代码+数据库+LW)
开发语言·数据库·spring boot·后端·spring·oracle