C++静态持续变量

C++为静态持续存储持续性变量提供了3种链接性:外部链接(可在其他文件中访问)、内部链接(只能在当前文件中访问)和无链接性(只能在当前函数或代码块中访问)。

 1 ...
 2 int globle = 100;          //静态持续性变量,具有外部链接性
 3 static int one_file = 50;        //静态持续性变量,具有内部链接性
 4 int main()
 5 {
 6 ...
 7 }
 8 void func1(int n)
 9 {
10   static int count = 0;          //静态持续性变量,不具有链接性
11 }

如果要在多个文件中使用外部变量,只需要在一个文件中包含该变量的定义,但在使用该变量的其他文件中,都必须使用关键字extern声明它:

//file01.cpp
extern int cats = 20;    //definition because of initialization
int dogs = 22;    //also a definition 
int fleas;    //also a definition 
...
//file02.cpp
extern int cats;    //not definition because they use
extern int dogs;    //extern and have no initialization
...
//file98.cpp
extern int cats;
extern int dogs;
extern int fleas;
...

 无链接性的局部变量将static限定符用于在代码块中定义,在代码块中使用static时,导致它在该代码块不处于活动状态时仍然存在。因此在两次函数调用之间,静态局部变量的值将保持不变。另外,如果初始化了静态局部变量,则程序只在启动时进行一次初始化。以后再调用函数时,将不会像自动变量那样再次被初始化。

原文地址:https://www.cnblogs.com/SChenqi/p/9750164.html