C++为静态存储持续性变量提供3种链接性:外部链接性(外部其他文件可以访问)、内部链接性(只在当前文件中访问)、无链接性(只在当前函数或者代码块中访问)。
编译器将分配固定的内存块来储存所有的静态变量,这些变量在程序执行期间一直存在。 如果没有显示的初始化这些变量,编译器将会把这些变量初始化为0。
默认情况下,静态数组和结构将每个元素或成员的所有位都设置为0
#include<iostream>
using namespace std;
int global = 10;//外部链接性
static int one_file = 50;//内部链接性
void fun1()
{
static int a_value = 6;//无链接性
int count = 1;
}
void fun2()
{
int global = 11;
cout << "global = " << global << endl;
cout << "real global = " << ::global << endl; //作用域解析运算符 放在变量名前面 代表使用变量的全局版本
}
int main()
{
fun2();
return 0;
}
从下图可以看出,变量a_value和count都只能在函数fun1中使用,而不同的是,即使fun1()函数没有被执行,变量a_value也留在内存中。