C++ - static存储类

1. 外部静态变量和局部静态变量都是程序被编译时分配存储,在程序运行结束后回收所占用的存储单元。

2. 外部静态变量的作用域是外部静态变量所在的文件内从变量定义之后直至文件结束。
局部静态变量的作用域是局部静态变量所在的块内从定义之后直至该块结束。

3. 外部静态变量的初始化同外部变量,在变量定义性说明时进行,赋初始的操作在整个程序运行期间仅执行一次,显式初始化值必须是常量表达式,若无显式初始化,则由系统自动初始化为与变量类型相同的0初值。
局部静态变量在第一次进入该块时执行一次且仅执行一次初始化,在有显式初始化的情况下,初值由说明符中的初值确定,若无显式初始化,则由系统自动初始化为与变量类型相同的0初值。

4. 外部静态变量与外部变量的区别:
外部静态变量只有定义性说明,没有引用性说明,作用域局限于其所定义的文件内,不能在其他文件中进行引用型说明或使用。
外部变量能在一个文件中进行定义性说明,而在另一个文件中进行extern引用性说明并使用。

5. 错误示例:
// C2159.cpp
// compile with: /c
static int i;    // OK
extern static int i;    // error C2159: 指定了一个以上的存储类

6. 小结:
static无法跨文件使用。
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值