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

函数返回值当引用目录

一.若返回变量为栈变量

1.例子

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

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

运行结果:

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

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

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

3.不能作为左值

运行结果:

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

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

1.列子

static只初始化一次变量哦.

2.即可左值也可右值

运行结果:

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

三.若返回变量为形参

1.普通形参

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

2.引用形参

左右值都可以作.

四.结论

  • 要看返回值引用的变量的生命周期
  • 像局部就不能对其作为左值和其他引用的初始值,但是可以返回给普通变量赋值
  • 像全局的就可以作为左值和右值
相关推荐
sycmancia2 分钟前
Qt——自定义控件温度计
开发语言·qt
有点。6 分钟前
C++广度优先搜索(二)-练习题
c++·算法·宽度优先
Q741_14714 分钟前
TcpDump 使用笔记
网络·c++·笔记·测试工具·tcpdump
程序猿编码18 分钟前
不用PyTorch,不用CUDA,我用C++手写了一个能跑GPT和Whisper的推理库
c++·pytorch·gpt·大模型·whisper
MC皮蛋侠客28 分钟前
TDengine C++ 系列(1):全景与最小闭环——从时序数据到第一个 C++ 读写
大数据·c++·tdengine
UQR32 分钟前
一、Java基础高频面试题
java·开发语言
MoonBit月兔36 分钟前
MoonBit 受邀亮相 SPLASH/ISSTA 2026,与 Java、Rust、Eiffel、D 语言核心贡献者同场交流
开发语言·后端·rust
知识分享小能手39 分钟前
线性代数学习教程,从入门到精通,矩阵及其运算 — 完整知识点与详细推导(3)
学习·线性代数·矩阵
必须会一定会41 分钟前
用纯 HTML/JS 做一个 AI 需求澄清器:把模糊想法转换成可执行任务书
开发语言·前端·javascript·人工智能·html·ai编程
MC皮蛋侠客1 小时前
TDengine C++ 系列(5):C/C++ 连接器——连接管理与查询 API
c语言·c++·tdengine