上一将次我提出了静态数组和外部数组初始化问题 书本上讲只有静态数组和外部数组可以初始化,但本人用下面程序调试时,却发现自动数组也可以初始化,不知道什么原因,望各位高人能给与指点,在此先谢谢了.
int main(void)
{
int i,ch[5]={1,2,3,4,5};
add(ch); /*第一次调用*/
for(i=0;i<5;i++) printf("%3d ",ch[i]);
printf("\n");
add(ch); /*第二次调用*/
for(i=0;i<5;i++) printf("%3d ",ch[i]);
printf("\n");
getch();
return 0;
}
int add(int *s)
{
int i;
static int a[5]={1,2,3,4,5};
for(i=0;i<5;i++)
{
s[i]+=a[i]; a[i]++;
}
return 0;
}
当add函数中a数组定义为static(静态)时,执行结果为:
2 4 6 8 10
4 7 10 13 16
即在第二次调用add时,a数组的值保持了上一次调用后的值.但当不使用static时,同样可以初始化,但结果却为:
2 4 6 8 10
3 6 9 12 15
也就是说第二次调用时没有保持第一次调用后的值,而是重新初始化了,这不说明自动数组也可以初始化吗?