在C语言中,为啥定义变量的时候总是初始化为0呢?该怎么理解。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在C语言中,为啥定义变量的时候总是初始化为0呢?该怎么理解。相关的知识,希望对你有一定的参考价值。
请问为什么很多时候都是初始化为0,这个0是一个整数型的数值还是一个概念东西。
搞不懂为什么是0而不是其他的?希望能举例说明。
谢谢下面各位的回复。
存在这种可能,该地址以前已使用过,但系统并没有回收,擦除。就存在脏数据。本回答被提问者采纳 参考技术B 如果你不想去研究汇编代码,那就记住:静态存储区的变量初始化为0,堆栈区(也就是局部)的变量初始化值看编译器,VC++6.0里的编译器初始化时把函数要用的堆栈区全初始化为0xcccccccc,而堆区(动态开辟)的值是不定的。
给你一个简单的测试
#include <stdio.h>
#include <malloc.h>
int a;
int main()
int b;
int *c = (int *)malloc(sizeof(int));
static int d;
printf("%x\n%x\n%x\n%x\n", a,b,*c,d);
free(c);
return 0;
参考技术C 如果全局变量在定义时不初始化则初始值是0,如果局部变量在定义时不初始化则初始值是不确定的。 参考技术D 谁说总是初始化0的,全局变量和静态变量会,局部变量不一定,可恨的不同的编译所采用的方式可能也不一样,所以建议在使用任何变量前自己要初始化
以上是关于在C语言中,为啥定义变量的时候总是初始化为0呢?该怎么理解。的主要内容,如果未能解决你的问题,请参考以下文章