c++ - 从函数中按值返回 - 为什么它有效?

标签 c++ c function return return-value

下面是一个返回整数的简单函数定义

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/

相关文章:

C++ | DLL/EXE - 如何从导出类中调用另一个类方法?

python - 如何通过 cython 将 numpy 数组列表传递给 C++

c - C中指针初始化概念

Python 统一码错误

javascript - 如果 JavaScript 中的一个函数有多个函数定义,为什么最后一个实现会优先?

c++ - cv::Mat 如何从/转换为 glm::mat4

c++ - 使用 C++20 概念专门化类模板的成员函数

c - 推送链接列表 - C

c - 如何防止字符串读取 C 中的 CTF 标志

c - 简单的C程序,一些关于函数的问题