static知多少

   以前也了解过static,知道它的生命周期是全局的,可以控制作用域。但却没有一个系统的归纳。现在我尝试归纳如下:

   一:修饰变量,静态存储

           一个static的变量,在编译的时候就被初始化了(如果没有主动初始化,会被初始化为0,这一点也被用于初始化稀疏矩阵),然后放在静态存储区中

      顺便补充一下存储区的知识:程序中的存储区分为静态存储区和堆栈。前者用于放两种数据:全局变量和static变量,这样只会被初始化1次

二、修饰函数、变量时,作用域只限于声明的源文件(不是头文件!)

      它的作用域是File Scope即,不能随便加个extern 就全局引用。作用域只限于当前源文件(但在头文件里声明,那只要包含了这个头文件,就到处可以使用了,static不起作用了,所以staic的声明,如果想限制作用域的话,要在源文件中)

       好了,这些只是简单的抛砖引玉,是个人自己的理解。

原文地址:https://www.cnblogs.com/jamesmile/p/1683452.html