- 定义数组后,未初始化
#define LEN1 5
static int array_static_glogal[LEN1];//定义静态全局数组,未初始化数组成员
int array_glogal[LEN1]; //定义全局数组,但未初始化数组成员
int main()
{
char key = 6;
switch(key)
{
case 6:
{
int i = 0;
int array2[LEN1]; //定义局部数组,但未初始化数组成员
int static static_array3[LEN1]; //定义静态局部数组,未初始化数组成员
printf("\n local array2 : ");
for(i=0;i<(sizeof(array2)/sizeof(array2[0])); i++)
{
printf("%d ", array2[i]);
}
printf("\n local static array3: ");
for(i=0; i<(sizeof(static_array3)/sizeof(static_array3[0])); i++)
{
printf("%d ", static_array3[i]);
}
printf("\n glogal static array: ");
for(i=0; i < sizeof(array_static_glogal)/sizeof(array_static_glogal[0]); i++)
{
printf("%d ", array_static_glogal[i]);
}
printf("\n glogal array: ");
for(i = 0; i < LEN1; i++)
{
printf("%d ", array_glogal[i]);
}
printf("\n");
}
编译完成后,可看到,静态全局数组和全局数组定义后,虽未初始化,但编译器默认用数值0填充; 静态局部数组定义后,未初始化,结果也是自动填充0;
而局部数组就不一样,定义后不初始化,数组各元素值将用随机数值填充。