1、全局静态变量
a、只能在当前文件内使用。—— 由编译器在编译之前进行语法检查,来保证。
b、其他点同全局变量相同—— 内存结构、访问原理
2、局部静态变量
a、作用域是 { }
int main()
{
{
static int x = 9;
x++;
}
x++; // 编译失败
return 0;
}
b、生命周期同全局变量,会先被当做全局变量。
c、初始化只有一次,在第一次进入初始化代码时,进行初始化。本质是赋值。编译器会检查是否初始化过。
d、编译器通过名称粉碎法,在编译器对局部静态变量改名字:加入作用域和类型信息。——其他作用域就找不到它啦