函数里面的局部变量只有在函数结束后才会释放。
main函数里面的a也是,只有main函数结束也就是程序运行结束才会释放。
当你进入processing函数时,a会被压入栈中。
当编译器处理该代码时,遇到静态变量的初始化,就会在函数f外单独生成一条命令,给j赋值为0.
这些命令甚至会在main函数调用以前就执行。而在函数中,第一条语句实际上不是j=0,而是++j。
这样,使得静态局部变量只初始化一次。
void
main()
{
int
a[1024]={0.0};//在栈里
processing();
//processing()中的int
b[1024]被回收了,因为int
b没有在作用域中具有生命周期了
}
//程序在此运行结束,int
a[1024]={0.0};也被回收
void
processing(void)
{
int
b[1024]={0.0};//也在栈里
}