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

函数返回值当引用目录

一.若返回变量为栈变量

1.例子

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

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

运行结果:

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

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

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

3.不能作为左值

运行结果:

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

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

1.列子

static只初始化一次变量哦.

2.即可左值也可右值

运行结果:

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

三.若返回变量为形参

1.普通形参

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

2.引用形参

左右值都可以作.

四.结论

  • 要看返回值引用的变量的生命周期
  • 像局部就不能对其作为左值和其他引用的初始值,但是可以返回给普通变量赋值
  • 像全局的就可以作为左值和右值
相关推荐
jzlhll1232 分钟前
Kotlin Mutex vs Java ReentrantLock vs synchronized
java·开发语言·kotlin
头疼的程序员7 分钟前
计算机网络:自顶向下方法(第七版)第五章 学习分享(二)
学习·计算机网络
niceffking7 分钟前
C++:initializer_list 与 {} 初始化的本质
开发语言·c++·cpp
jaysee-sjc8 分钟前
十六、Java 网络编程全解析:UDP/TCP 通信 + BS/CS 架构
java·开发语言·网络·tcp/ip·算法·架构·udp
江沉晚呤时10 分钟前
基于 AssemblyLoadContext 的 .NET 插件化架构设计与实现
开发语言·c#·.net
A_nanda12 分钟前
一款前端PDF插件
前端·学习·pdf·vue
2501_9307077815 分钟前
使用C#代码获取PDF文件的页数
开发语言·pdf·c#
安逸sgr16 分钟前
MCP 协议深度解析(八):Prompts 提示模板与 Sampling 采样机制!
人工智能·分布式·学习·语言模型·协议·mcp
.select.18 分钟前
虚函数和虚表
开发语言·c++·算法
王ASC18 分钟前
Java不重启加载新的class文件
java·开发语言