static 变量是怎样对外不可见的?

1、全局静态变量

a、只能在当前文件内使用。—— 由编译器在编译之前进行语法检查,来保证。

b、其他点同全局变量相同—— 内存结构、访问原理

2、局部静态变量

a、作用域是 { }

int main()
{
    {
        static int x = 9;
        x++;
    }
    x++; // 编译失败
    return 0;
}

b、生命周期同全局变量,会先被当做全局变量。

c、初始化只有一次,在第一次进入初始化代码时,进行初始化。本质是赋值。编译器会检查是否初始化过。

d、编译器通过名称粉碎法,在编译器对局部静态变量改名字:加入作用域和类型信息。——其他作用域就找不到它啦

你可能感兴趣的:(计算机体系知识,开发语言,c++,c语言)