This question already has answers here:
returning a local variable from function in C [duplicate]
(4 个回答)
6年前关闭。
在我们的讲座中,我们有以下例子:
它被显示为一个不好的例子,但没有进一步解释。为什么这很糟糕?
您返回局部变量
您取消引用此地址并将
(4 个回答)
6年前关闭。
在我们的讲座中,我们有以下例子:
int *foo(int x) {
return &x;
}
int* pt = foo(x);
*pt = 17;
它被显示为一个不好的例子,但没有进一步解释。为什么这很糟糕?
最佳答案
这里
int *foo(int x) {
x
是一个局部的、非静态的变量。通过做return &x;
您返回局部变量
x
的地址。只要函数存在,它就存在,当函数退出时,该地址将无效,您可以随意使用。通过使用*pt = 17;
您取消引用此地址并将
17
写入此无效内存位置。这会触发 Undefined Behavior 。这就是给定代码不好的原因。关于C 指针示例 - 这有什么不好?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29918173/
10-12 16:58