C++为静态存储持续性提供了3种链接性:外部链接(可在其他文件中访问)、内部链接(只能在当前文件中访问)和无链接(只能在当前函数或代码块中访问)。
编译器将分配固定的内存块来存储所有的静态变量,这些静态变量在整个程序执行期间一直存在。如果没有显式的初始化静态变量,编译器将把它设置为0,在默认情况下,静态数组和结构将每个元素或成员的所有位置都设置为0。
(1)外部链接:必须在代码块的外部声明它;
(2)内部链接:必须在代码块的外部声明它,并使用static限定符;
(3)无链接:必须在代码内声明它,并使用static限定符。
如下面例子:
...
int global = 1000; // static duration, external linkage
static int one_file = 50; // static duration, internal linkage
int main()
{
...
}
void funct1(int n)
{
static int count = 0; // static duration, no linkage
int llama = 0;
...
}
void funt2()
{
...
}
说明:
(1)静态变量 global、one_file、count在整个程序执行期间都存在;
(2)count:作用域为局部,没有链接性。意味着只能在funct1()函数中使用