所以它的价值是不确定的.因此,如果我们尝试使用它或应该有未定义的行为.
所以,如果我在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;}
你能解释一下这种行为吗?我们只添加了对一个什么都不做的函数的调用,但现在程序不会崩溃.
解决方法 读取未初始化变量的值会导致未定义的行为.未定义的行为意味着它可能崩溃.这并不意味着它会或它有义务崩溃.未初始化的变量具有未指定的值 – 它只是未知它的值是什么.所以在实践中,任何理智的实现,这种代码可能永远不会崩溃.有一个有效的内存地址支持变量,它有一些垃圾内容,printf()没有问题地读取它,将它解释为整数并打印它,就是这样.
总结以上是内存溢出为你收集整理的C中未初始化的变量全部内容,希望文章能够帮你解决C中未初始化的变量所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)