c++ - 为什么在这种情况下我可以为 int& f1 返回一个局部变量
问题描述
我需要确定以下语法是否:
int& f1(int i, int& j) { int& k = i; j+=i; return k; }
是正确的。
我已经对其进行了测试,令我惊讶的是,它可以编译。
我的理解是,由于我们的函数f1
是类型的int&
,它不能返回局部变量。通过调用该函数,我创建了一个局部变量i
。当我设置int& k = i
时,我将内存空间设置k
为i
。因此k
是一个局部变量,因此它不应该编译,因为k
返回了局部变量。
任何解释都非常有帮助。
解决方案
推荐阅读
- r - 识别变量内所有项目中存在的通用文本
- html - 没有滚动条的背景图像
- python - 如何从同一文件夹和外部通用导入 Python 文件?
- javascript - Axios调用Springboot后端响应返回响应后不转发到新页面
- docker - 错误:在 Gitlab Runner 中找不到 pg_config 可执行文件
- python - 尝试使用 python3 webscraper
- java - 如何在 Quarkus 应用程序中检索 SecurityContext?
- javascript - 将鼠标悬停在一个 div 上以触发另一个 div 中的动画
- r - R GAM 交互代码突然停止工作
- java - 将 POJO 转换为 xml 时去掉内部类的类名