ont*_*cks 2 c c++ return function return-value
以下是一个返回整数的简单函数定义
int myFunc()
{
int localVar = 99;
return localVar;
}
Run Code Online (Sandbox Code Playgroud)
它主要称为
int main()
{
int y = myFunc();
cout << y << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这按预期工作.我想知道为什么?
localVar是一个局部变量,其值在堆栈中分配.一旦功能结束,它就会超出范围.那么,localVar在调用范围内会超出范围int y = myFunc();如何/为什么它仍然能够返回正确的值?
您的函数返回值的副本 - 这就是"按值返回"的含义.
int y = myFunc();将值的字节从函数调用使用的临时位置复制到本地变量.
只有返回局部变量的地址才会失败.