C语言中,数组初始化的问题

来源:百度知道 编辑:UC知道 时间:2024/06/05 05:12:06
我在vc++6.0环境下运行c语言程序,现在想问一下,在函数外定义的数组(全局变量),我如果不初始化的话,那么这个数组里面的值是多少呢?是不是一定全是0啊?

晕...这么多错误答案..
我来说下把,对于int类型,在外部定义(意思是在所有函数外定义)的数组或者变量等等,如果不给出显示的初始化,则编译器会自动将其初始化为0
如果不是在外部定义的,是局部性质的,则编译器不会对其进行初始化,他里面的值就是随机的,是乱码...至于这些你可以自己编个程序试一下啊

如果要权威答案,觉得编译器不可靠,那么你可以找本书来找找,书上有这段话的说明的,不过也许你的书上没有,那你就另外要找书了,因为有些书真的不怎么好.很垃圾,讲的不全面,下面分别给你两个程序,你自己运行下就知道了

程序1.
//定义为局部性质的数组

#include <stdio.h>
void main()
{
int a[5]; //定义局部性质的数组
int i;
for(i=0;i<5;i++)
{
printf("%2d",a[i]);
}
printf("\n");
}

程序2.
//定义为全局性质的数组

#include <stdio.h>
int a[5]; //定义为全局性质的数组
void main()
{
int i;
for(i=0;i<5;i++)
{
printf("%2d",a[i]);
}
printf("\n");
}

上面的两个程序都没给出显示的初始化,来判断编译器是否对它进行初始化,对比下...
运行后你会发现,定义为全局性质的数组的都会被编译器自动初始化为0
而非全局的,即局部性质的都不会被自动初始化
显示的是乱码

如果不初始化,数组值都是0xcccccccc...几个c不记得了;
如果初始化,int a[M]={0};//那么第一个元素为0,其余系统给初