1.修饰变量
静态全局变量:作用域仅限于变量被定义的文件中,从定义开始到文件结尾。
静态局部变量:在函数体内定义,只能在函数内使用。被status修饰的变量总是存在内存的静态区,即使这个函数运行结束,静态变量的值也不会被销毁,下次运行该函数时依然能使用该值。
#include <stdio.h>
#include <windows.h>
static int j;
void fun1(void)
{
static int i = 0;
i++;
printf("i = %d\n",i);
}
void fun2(void)
{
j = 0;
j++;
printf("j = %d\n",j);
}
int main()
{
int k=0;
for(k=0; k<10; k++)
{
fun1();
fun2();
}
printf("Hello World\n");
system("pause");
return 0;
}
结果
静态全局变量i:每次调用函数fun1(),静态全局变量i重新赋值并加1。
静态局部变量j:每次调用函数fun2(),静态局部变量j使用原来的静态存储区,使用之前的值加1。
2.修饰函数
函数前加static使得函数成为静态函数,这里的static并不是指存储方式,指的是对函数的作用域仅局限于本文件(内部函数)。有利:编写不同文件里的函数时,不用担心在一个文件里的函数和其他文件里的函数重名。