下面是一个返回整数的简单函数定义
int myFunc()
{
int localVar = 99;
return localVar;
}
它在 main 中调用为
int main()
{
int y = myFunc();
cout << y << endl;
return 0;
}
这按预期工作。我想知道为什么?
localVar
是一个局部变量,它的值在堆栈中分配。一旦函数结束,它就会超出范围。所以,localVar
会超出调用 int y = myFunc();
的范围,它如何/为什么仍然能够返回正确的值?
最佳答案
您的函数正在返回值的拷贝——这就是“按值返回”的意思。
int y = myFunc();
会将值的字节从函数调用使用的临时位置复制到您的局部变量。
只有返回局部变量的地址才会失败。
关于c++ - 从函数中按值返回 - 为什么它有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21315097/