2011-05-04 69 views

回答

1

简短的回答,是的。

静态的未初始化变量驻留在可执行文件的.bss段中,操作系统在调用main之前,在程序启动时分配并将它们归零。

+1

初始化它仍然是一个好主意。 – Dima 2011-05-04 17:49:15

+0

@迪玛:一个特殊的原因? – 2011-05-04 17:52:28

+1

这是一个很好的做法,恕我直言。这样您就不必考虑哪些变量会自动初始化,哪些变量不会自动初始化。假设您以后决定'x'不应该是静态的,但忘记初始化它,并且该错误将是一个极大的痛苦。 – Dima 2011-05-04 17:58:59

5

C99 Standard说:

5.1.2执行环境

...中的所有对象在启动程序 之前,初始化(设置为其初始值)的静态存储器应为 。

而且它也说,与static限定词定义一个局部变量具有“静态存储”,并在没有初始化的所有对象采取正确的类型,它们的值0。

0

所有的静态变量存储在Datasection在存储部分,所有的变量设置为默认值。