#include <stdio.h>
static int j;
void fun1(void)
{
static int i=0;
i++;
printf("i=%d \n",i);
}
void fun2(void)
{
int j=0;
j++;
printf("j=%d \n",j);
}
int main()
{
int k=0;
for(k=0;k<10;k++)
{
printf("k=%d \n",k);
fun1();
fun2();
}
return 0;
}
结果:
k=0
i=1
j=1
k=1
i=2
j=1
k=2
i=3
j=1
k=3
i=4
j=1
k=4
i=5
j=1
k=5
i=6
j=1
k=6
i=7
j=1
k=7
i=8
j=1
k=8
i=9
j=1
k=9
i=10
j=1
作用一:修饰变量。静态全局变量,作用域仅限于本文件(从开始定义位置到本文件结束的位置)。静态局部变量,改变变量的生命周期和存储位置,局部变量被放在栈上,当程序调用结束,即销毁。当局部变量加上static修饰时,被放在数据段(被初始化为非0的Static局部变量),或者是bss段(初始化为非0的Static局部变量)。
作用二:修饰函数。函数前加static使其变成静态函数。将函数的作用域局限于本个文件,同一个工程里面的其他文件看不见该函数类似隐藏。便于大型项目的开发。