从函数返回值 - 为什么它起作用?

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();如何/为什么它仍然能够返回正确的值?

SLa*_*aks 6

您的函数返回值的副本 - 这就是"按值返回"的含义.
int y = myFunc();将值的字节从函数调用使用的临时位置复制到本地变量.

只有返回局部变量的地址才会失败.

  • "将复制值的字节" - 名义上.一旦优化器完成它,事情可能看起来不同:-) (2认同)