以前也了解过static,知道它的生命周期是全局的,可以控制作用域。但却没有一个系统的归纳。现在我尝试归纳如下:
一:修饰变量,静态存储
一个static的变量,在编译的时候就被初始化了(如果没有主动初始化,会被初始化为0,这一点也被用于初始化稀疏矩阵),然后放在静态存储区中。
顺便补充一下存储区的知识:程序中的存储区分为静态存储区和堆栈。前者用于放两种数据:全局变量和static变量,这样只会被初始化1次。
二、修饰函数、变量时,作用域只限于声明的源文件(不是头文件!)
它的作用域是File Scope即,不能随便加个extern 就全局引用。作用域只限于当前源文件(但在头文件里声明,那只要包含了这个头文件,就到处可以使用了,static不起作用了,所以staic的声明,如果想限制作用域的话,要在源文件中)
好了,这些只是简单的抛砖引玉,是个人自己的理解。