c/c++基础回顾-static

1. static变量只初始化一次,多次初始化会出现错误

2. (static)静态全局变量和(auto)动态全局变量,静态局部变量和普通局部变量,静态成员变量和普通成员变量区别,其实主要体现在生命期和作用域

  •  静态全局变量与动态全局变量不同主要体现在其作用域,静态全局变量作用域存在于当前文件,而动态全局变量作用域存在于整个项目文件,其他文件使用该变量涉及extern关键字,两者的另一差异体现在static全局变量默认初始化为0

  •  静态局部变量和普通局部变量差异体现在其生命期,虽然两者的作用域都属于该局部区域,例如一个函数里,普通的局部变量在函数return掉后会销毁,而静态局部变量生命存在于程序运行阶段,它和全局变量一样存在于内存的全局数据区。静态局部变量存在默认初始化

  •  静态成员变量和普通成员变量对于其作用域明确的说,前者属于类,后者属于类的实例(对象)。同时两者的初始化也存在差异,静态成员变量不存在默认初始化(该处说法可能存在问题),必须自己进行初始化。由于静态成员变量必须在程序运行时(简单理解为进入入口函数时)必须已经被定义,所以它的初始化应该在全局函数,入口函数前面等地初始化,不能在类的构造函数中初始化(普通成员变量在构造函数中初始化),但也要避免在头文件中初始化,因为头文件可能多次被包含导致多次初始化。静态成员变量初始化方法:类型 类名::变量名 = 值 ;(int A::a = 2 ;)

3. static的记忆性(体现在生命期)和隐藏性(体现在作用域)

转载于:https://my.oschina.net/u/2364109/blog/419901

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值