包含这个函数的代码会编译吗?
int *f1(void)
{
int x = 10;
return &x;
}
它在我的系统中编译良好,但我看到了此代码编译失败的解释:“函数 f1 返回局部变量的地址。由于变量的生命周期在函数返回后结束,因此对返回值的任何使用都会产生未定义的行为。”
最佳答案
它会编译得很好。然而,编译的结果将产生未定义的行为,这意味着任何事情都可能发生。它可以工作,它可以崩溃,它可以召唤粉红色的 unicorn 在你的电脑前跳舞。这是未定义的。
修复代码,无论编译与否,它都是坏代码。
在某些编译器上,它可能会产生警告,您可以配置编译器,以便在出现警告时发出错误。因此也许在某些编译器下使用某些设置,它甚至可能无法编译。
关于c - 这段C代码是否可以编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25461708/