static变量在c++中的使用
2017-04-24
今天学习c++ singleton(单例模式)的实现时,发现static关键字扮演者至关重要的角色,趁此机会总结一下:
1.static简介
2.static作用
3.static局部变量和static全局变量的区别
4.示例
1. static 简介
变量其实只不过是程序可操作的存储区的名称。 C++ 中每个变量都有指定的类型,类型决定了变量存储的大小和布局,该范围内的值都可以存储在内存中,运算符可应用于变量上。
变量的存储区分类:
- 栈:临时变量。由编译器决定何时分配,不需要的时候自动清除的内存。
- 堆:由 new 分配的内存块。由编程人员指定何时分配,并要delete显式释放。堆可以动态地扩展和收缩。
- 常量存储区:里面存放的是常量,不允许修改。
- 静态存储区:全局变量,静态变量。
2. static 作用
static的作用主要有3点:
- 隐藏:加了static变量作用域会限制在该变量所处的.c,.cpp文件中,其他.c,.cpp文件无法访问到它。
- 变量的持久化:静态数据区的变量会在程序刚开始运行时,就完成唯一一次初始化。
- 默认初始化为0:出生在静态存储区的变量(static,global),会自动初始化为0x00。tips:将变量弄成全局的可以省去初始化为0的工序。
3. static局部变量和static全局变量的区别
主要区别在于“隐藏”这一点:
加了static变量作用域会限制在该变量所处的.c,.cpp文件中,其他.c,.cpp文件无法访问到它。
而未加static的全局变量可以在其他文件中访问到。
4. static变量使用示例
|
|
运行结果: