1.初始化
静态变量(包括静态数组)只初始化一次的,也就是在程序开始之前执行。程序并不需要执行指令把他们放到特殊的位置,他们一开始就在那里了。当它没有被初始化时,它的值会被自动设置为0。当文件被载入到内存中准备执行时(操作系统中的就绪状态),初始化的程序指令和静态变量一样被载入到内存中。因此当程序执行时,静态变量已经初始化完毕。
自动变量位于运行时堆栈中,执行流每次进入它所在的代码块时,这些变量每次所处的内存位置可能并不相同。在程序开始之前,编译器没有办法对这些变量进行初始化。所以自动变量在缺省情况下时是未初始化的,比如 int i; 此时编译器会给它一个随机值,不会对它进行初始化。如果自动变量的声明中给出了初始值,每次当执行流进入自动变量所在的区域时,变量就会被一条隐式的赋值语句初始化。
所以当一个数组的初始化局部于一个函数(或者代码块)时,当程序每次进入该函数(或者代码块)时,每次对数组初始化是不是值得,如果答案是否定的,就把数组声明为
static,这样,数组的初始化只在程序开始前执行一次。
衣带渐宽终不悔,为伊消得人憔悴
浙公网安备 33010602011771号