函数中使用的自动 存储不会重新初始化使用auto关键字声明的i变量。
Practice.c : main() 和 func() 在Practice.c中
#include <stdio.h>
main()
{
func();
func();
func();
}
func()
{
auto int i=1;
printf(" i = %d",i);
i=i+1;
}
编译后执行Practice.exe输出如下:
i = 1
i = 1
i = 1
每次main()调用func()时,i 都会重新初始化为 1。这是正确的,因为i的范围在func()块内,当控制离开该块时,i的值会丢失。所以,当我第二次调用这个func()函数时,i的值将被重新初始化为1。
检查以下New.c程序。
New.c :包含main()和func()
#include <stdio.h>
main()
{
func();
func();
func();
func();
func();
func();
func();
func();
}
func()
{
auto int i;
printf(" i = %d",i);
i=i+1;
}
可以肯定的是,我调用了函数func() 8 次。但是在New.c 中, i没有被初始化。当我在编译后执行这个程序时,它的输出如下:
i = 4201582
i = 4201583
i = 4201584
i = 4201585
i = 4201586
i = 4201587
i = 4201588
i = 4201589
输出显示每次调用的增量。这背后的确切原因是什么?