这个问题突然冒出来了,这对我来说是藏在角落的问题!查了一下资料,整理出来请大家阅读后发表一下各自的看法,谢谢!

 

对于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 
而非全局的,即局部性质的都不会被自动初始化 
显示的是乱码