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

函数返回值当引用目录

一.若返回变量为栈变量

1.例子

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

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

运行结果:

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

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

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

3.不能作为左值

运行结果:

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

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

1.列子

static只初始化一次变量哦.

2.即可左值也可右值

运行结果:

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

三.若返回变量为形参

1.普通形参

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

2.引用形参

左右值都可以作.

四.结论

  • 要看返回值引用的变量的生命周期
  • 像局部就不能对其作为左值和其他引用的初始值,但是可以返回给普通变量赋值
  • 像全局的就可以作为左值和右值
相关推荐
Allen Roson7 分钟前
CListCtrl::InsertItem和临界区导致程序卡死
c++·windows·insertitem卡死·clistctrl插入项目·临界区死锁
酒鬼猿12 分钟前
C++初阶(十五)--STL--list 的深度解析与全面应用
开发语言·c++
gma99913 分钟前
JSONCPP 数据解析与序列化
开发语言·前端·javascript·c++
苹果酱056723 分钟前
4-SpringCloud整合服务间的调用即负载均衡
java·开发语言·spring boot·mysql·中间件
以卿a32 分钟前
C++ 日期计算器的实现(运算符重载)
java·开发语言·c++
2401_840759761 小时前
2062:【例1.3】电影票(http://ybt.ssoier.cn:8088/problem_show.php?pid=2062)
c++
程序员与背包客_CoderZ1 小时前
C++设计模式——Singleton单例模式
c语言·开发语言·c++·单例模式·设计模式
fanyamin1 小时前
编程语言的局限
开发语言·python
小猿_001 小时前
C语言蓝桥杯组题目
c语言·开发语言·蓝桥杯
落笔映浮华丶1 小时前
C++(进阶) 第1章 继承
开发语言·c++