C/C++自动变量和静态变量的初始化(这是笔记,不官方)

数组(向量)类似于标量的初始化方式取决于变量的存储方式。存储于自动存储空间的变量在main函数执行之前已经完成初始化,这个动作是有链接器完成的,不需要程序执行指令去对其进行初始化。而这个初始化的内容不管是数组还是普通变量初始化值均为0,在程序执行的之前这些内容和程序翻译出的指令一同被载入到内存。因此这些初始化是在程序执行之前完成的。

然而对于自动变量,因为自动变量存储于堆栈中,每一次进入到对应自动变量的作用域的时候其地址可能都不一样,如果自动变量没有初始化语句,此时自动变量是不会被初始化的,其值是不确定的。但是如果自动变量有初始化语句,则每次进入到相应的代码快的时候程序都会对其进行一次隐式的初始化,这会消耗时间和空间来执行。同理,如果这是一个数组,其初始化一样会被分多次执行。若数组很大这个执行消耗的资源是客观的。因此定义数据的时候需要考虑这一因素。尽量避免在初始化的地方浪费太多的资源。慎重考虑对数组的重复初始化是否值得,若否则应该将数组声明为静态,这样它可以在程序开始前只执行一次

你可能感兴趣的:(入门,C/C++)