C语言中多次调用函数时静态局部变量只赋值一次

硬件原理是什么? 第二次调用函数时,静态局部变量为上一次运行后的结果?
物理原理是什么?
例如这个函数中

main()
{
int i;
void f();
for (i=1;i<=5;i++)
f();
}
void f()
{
static int j=0;
++j;
printf("%d\n",j);
}
当再次调用函数f()时为什么有这句 static int j=0; 为什么就没有赋值了 物理原理是什么?

第1个回答  2008-04-02
静态局部变量实际上是外部于这个函数的全局量,退出函数时,它的值保留在那里,再调用函数时,如果不被赋新值,它仍保留老值。