这个问题突然冒出来了,这对我来说是藏在角落的问题!查了一下资料,整理出来请大家阅读后发表一下各自的看法,谢谢!
对于int类型,在外部定义(意思是在所有函数外定义)的数组或者变量等等,如果不给出显示的初始化,则编译器会自动将其初始化为0
如果不是在外部定义的,是局部性质的,则编译器不会对其进行初始化,他里面的值就是随机的,是乱码...至于这些你可以自己编个程序试一下啊
如果要权威答案,觉得编译器不可靠,那么你可以找本书来找找,书上有这段话的说明的,不过也许你的书上没有,那你就另外要找书了,因为有些书真的不怎么好.很垃圾,讲的不全面,下面分别给你两个程序,你自己运行下就知道了
程序1.
//定义为局部性质的数组
#include <stdio.h>
void main()
{
int a[5]; //定义局部性质的数组
int i;
for(i=0;i<5;i++)
{
printf("%2d",a);
}
printf("\n");
}
程序2.
//定义为全局性质的数组
#include <stdio.h>
int a[5]; //定义为全局性质的数组
void main()
{
int i;
for(i=0;i<5;i++)
{
printf("%2d",a);
}
printf("\n");
}
上面的两个程序都没给出显示的初始化,来判断编译器是否对它进行初始化,对比下...
运行后你会发现,定义为全局性质的数组的都会被编译器自动初始化为0
而非全局的,即局部性质的都不会被自动初始化
显示的是乱码