我有点困惑。据我所知,如果您在 C 中声明一个 int 而不初始化它,例如:int x;
所以它的价值是不确定的。因此,如果我们尝试使用它或应该有未定义的行为。
因此,如果我在 VS2010 中运行以下代码,它会使程序崩溃。
int main(){
int a;
printf("%d\n",a);
return 0;
}
现在让我们看看下一个代码,它没有提供任何警告并且没有崩溃(为什么?)
void foo(int *var_handle){
// do nothing
}
int main(){
int a;
foo(&a);
printf("%d\n",a); // works, prints some big value
return 0;
}
你能解释一下这种行为吗?我们只添加了对一个什么都不做的函数的调用,但现在程序不会崩溃。