目录
初始化只有一次,但是可以多次赋值,在主程序之前,编译器已经为其分配好了内存。
静态局部变量和全局变量一样,数据都存放在全局区域(数据区),所以在主程序之前,编译器已经为其分配好了内存。
一、C语言中静态变量初始化
通过变量去初始化静态局部变量,意思就是当程序运行起来执行到 static int b = a就会进行初始化,但是编译就直接报错了,说明C语言中静态成员变量是在编译的时候就会分配好内存进行初始化。
同样全部变量也是如此。
二、C++中静态成员变量初始化
而在C++中,初始化时在执行相关代码时才会进行初始化,主要是由于C++引入对象后,要进行初始化必须执行相应构造函数和析构函数,在构造函数或析构函数中经常会需要进行某些程序中需要进行的特定操作,并非简单地分配内存。所以C++标准定为全局或静态对象是有首次用到时才会进行构造,并通过atexit()来管理。在程序结束,按照构造顺序反方向进行逐个析构。所以在C++中是可以使用变量对静态局部变量进行初始化的。
C++中内置类型比如向int,double,char都升级成了类
总结:
- 静态成员的数据存放在数据区,编译的时候进行分配空间。
- 如果是在C语言中在编译的时候进程初始化。
- 如果是在C++中在对象第一次使用的时候进行初始化。