c/c++基础回顾-static

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

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

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

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

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

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

你可能感兴趣的:(静态,static)