【发布时间】:2014-02-14 09:50:03
【问题描述】:
以下是一个返回整数的简单函数定义
int myFunc()
{
int localVar = 99;
return localVar;
}
它在 main 中调用为
int main()
{
int y = myFunc();
cout << y << endl;
return 0;
}
这按预期工作。我想知道为什么?
localVar 是一个局部变量,它的值是在堆栈中分配的。一旦函数结束,它就会超出范围。那么,localVar 会超出调用 int y = myFunc(); 的范围,它如何/为什么仍然能够返回正确的值?
【问题讨论】:
-
那么如果是你想的那样返回值的目的是什么?
-
因为你的函数
int myFunc()的返回类型。它允许您传回一个 int 值。变量localVar确实超出了main()的范围,但没有使用localVar,y是。 -
返回值不是在栈中,而是在寄存器中
标签: c++ c function return return-value