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

本文探讨了全局静态变量的使用限制、局部静态变量的作用域、生命周期、初始化特性以及编译器如何处理名称粉碎法。作者强调了静态变量在内存管理和编译过程中的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、全局静态变量

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

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

2、局部静态变量

a、作用域是 { }

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

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

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

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值