C++ Primer Plus P309 9.2.3
c++为静态存储持续性提供了3种链接性:外部链接性(可在其他文件中访问),内部链接性(只能在当前文件访问)和无连接性(只能在当前函数和代码块中访问)。编译器将分配固定的内存块来储存所有的静态变量。如果没有显式地初始化静态变量,编译器将把它设置为0。
int global = 1000; //全局变量
static int one_file = 50; //静态全局变量
int main()
{
…
}
void func1(int n)
{
static int count = 0; //静态局部变量
int llama = 0;
}
在func1()中声明的变量count的作用域为局部,没有连接性,这意味着只能在func1()中使用它,就像自动变量llama一样。然而,与llama不同的是,即使在func1()函数没有执行的时候,count也留在内存中,不像llama会消失。
global和one_file的作用域都为整个文件,即在从声明位置到文件结尾的范围内都可以被使用。具体地说,可以在main()、func1()等其他函数使用。由于one_file的链接性为内部,因此只能在包含上述代码的文件中使用它;由于global的链接性为外部,因此可以在程序的其他文件中使用它。