static修饰的全局变量的作用范围会被限制在声明的源文件内。
举个例子,
a.c
b.c
c.h
其中c.h被a.c,b.c引用, 而且c.h中定义了:
static int test = 0;
在编译的时候,a.c会和c.h一起编译, 然后b.c也会和c.h一起编译, 但是要注意, 编译器分别编译这两组文件的时候, 变量test会分别分配地址, 然后初始值也都为0;
这就意味着, 在a.c中如果调用了test, 其初始值为0;假设在a.c中test随后被修改为了2, 然后b.c中也调用test,这时test的初始值还是0, 而不是2!