static类型的局部变量是在程序开始的时候就存在的,而且它的生命一直持续到程序的结束
//include<stdio.h>
int main()
{
int i;
for(i=0;i<3;i++)
{
static int j=1; // 这是个static类型的局部变量,
// 它在程序的整个运行期间都存在
// 每次程序运行到这里都不为这个变量赋初值
// 赋初值的工作在编译时就已经完成了
// =1这个代码不会被编译
printf("%d",j);
j++;
} //程序执行到这里后变量 j 依然占据着原来的内存
//这样它的值被一直保留着直到程序结束
return 0;
}
如果在定义时没有指定初值,则对于static类别的局部变量来说初始值时 “ 0 ”(各种类型的0)
形参不可以是static类别的,这在概念上那是自相矛盾的。行为形参必须在函数调用时,才能把实参的值作为自己的初值。
注意:尽管static局部变量在程序运行期间一直都存在,但这并不意味着这个变量在代码中哪里都可以使用。static局部变量依然只能在自己所在的代码模块中可以使用,
static是时间上的概念,而局部是代码空间中的概念