首页 > 解决方案 > 为什么在这种情况下我可以为 int& f1 返回一个局部变量

问题描述

我需要确定以下语法是否:

int& f1(int i, int& j) { int& k = i; j+=i; return k; }

是正确的。

我已经对其进行了测试,令我惊讶的是,它可以编译。

我的理解是,由于我们的函数f1是类型的int&,它不能返回局部变量。通过调用该函数,我创建了一个局部变量i。当我设置int& k = i时,我将内存空间设置ki。因此k是一个局部变量,因此它不应该编译,因为k返回了局部变量。

任何解释都非常有帮助。

标签: c++referencelocal

解决方案


推荐阅读