gpt4 book ai didi

c - C 是否在右括号之前销毁返回变量?

转载 作者:行者123 更新时间:2023-12-02 07:00:10 25 4
gpt4 key购买 nike

有人告诉我,在 C(和 C++)中,return 语句中的变量在函数的右花括号之前被销毁。

例如 -

int func() {
int a = 10;
return a; // I was told that a is destroyed here
}

真的是这样吗?如果是,该函数如何将值返回给调用函数?

我的直觉告诉我,变量值在返回值处被插入堆栈,当它返回到调用函数时,堆栈顶部通过获取返回值弹出到那里。不确定我是否正确。

最佳答案

Does C destroy return variable before the closing brace?

是的......有点。

局部变量在方法结束时超出范围,之后,它们将不再可访问。

在 C 语言中,这仅仅意味着变量本身的存储可用于其他用途。但是变量没有主动“销毁”。

在 C++ 中,变量的析构函数(如果有的话)将在变量超出作用域时被调用。

在实现级别,局部变量的存储空间通常使用堆栈进行管理。但我认为这不是各自语言规范的强制要求。


同样重要的是要注意,我们谈论的是变量,而不是值。在您的示例中,变量的值将返回给调用者(提供 return 语句)并将继续存在于 } 之后 ...

关于c - C 是否在右括号之前销毁返回变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22448931/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com