- 全局变量作用域为所有的源文件(但是在a.c中的全局变量或者函数在b.c中使用时需要使用extern进行声明);被static修饰后的全局变量作用域仅为所在文件。
- 局部变量的作用域是所定义的函数内部;被static修饰后的局部变量虽然作用域仍为函数内部,但在多次执行这个函数时该局部变量不会被再次初始化。
#include <stdio.h>
void func1(void);
static int count=10;
int main()
{
while (count--) {
func1();
}
return 0;
}
void func1(void)
{
static int thingy=5;
thingy++;
printf(" thingy 为 %d , count 为 %d\n", thingy, count);
}
thingy 为 6 , count 为 9
thingy 为 7 , count 为 8
thingy 为 8 , count 为 7
thingy 为 9 , count 为 6
thingy 为 10 , count 为 5
thingy 为 11 , count 为 4
thingy 为 12 , count 为 3
thingy 为 13 , count 为 2
thingy 为 14 , count 为 1
thingy 为 15 , count 为 0
参考:对C语言 static作用——修饰 变量(全局变量/局部变量)、函数