修饰局部变量
static关键字的作用是将局部变量的存储类型,从自动变量改为静态变量,也就是说这个局部变量不再存储在堆栈或寄存器中,而是在编译的时候由编译器分配一个静态的地址空间,但是这个变量的作用域不受影响,依然仅局限在声明它的函数内部才可以访问。
声明为static的局部变量,可能使得它所在的函数变得不可重入。
修饰函数
如果 static 关键字被用于函数的定义时,这个函数就只能在定义该函数的 C 文件中引用,该 C 文件外的代码将无法调用这个函数。
修饰全局变量
在用于全局变量的声明时,Static 关键字的作用类似于函数的情况,这个全局变量的作用域将局限在声明该变量的 C 文件内部,这个 C 文件之外的代码将无法访问这个变量(事实上,如果采用指针的方式进行访问是可以的,但是这样就违背了将一个全局变量声明为 static的初衷了)。