C中未初始化的变量

C中未初始化的变量,第1张

概述我有点困惑.据我所知,如果你在C中声明一个int而没有初始化它,例如:int x; 所以它的价值是不确定的.因此,如果我们尝试使用它或应该有未定义的行为. 所以,如果我在VS2010中运行以下代码,它会导致程序崩溃. int main(){ int a; printf("%d\n",a); return 0;} 现在让我们来看看下一个代码,它没有提供任何警告而且没有崩溃( 我有点困惑.据我所知,如果你在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;}

你能解释一下这种行为吗?我们只添加了对一个什么都不做的函数的调用,但现在程序不会崩溃.

解决方法 读取未初始化变量的值会导致未定义的行为.未定义的行为意味着它可能崩溃.这并不意味着它会或它有义务崩溃.

未初始化的变量具有未指定的值 – 它只是未知它的值是什么.所以在实践中,任何理智的实现,这种代码可能永远不会崩溃.有一个有效的内存地址支持变量,它有一些垃圾内容,printf()没有问题地读取它,将它解释为整数并打印它,就是这样.

总结

以上是内存溢出为你收集整理的C中未初始化的变量全部内容,希望文章能够帮你解决C中未初始化的变量所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1221026.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存