※ 引述《wtchen (没有存在感的人)》之铭言: 问题点
: ^^^^^^
: 备注:
: 根据C Standard,拥有static storage duration的变量,
: 例如全域变量(global variable)或带有static修饰字者,
: 其初值(宣告的时候若是没有另外设初值的情况)为定值(最自然的初值就是0)。
: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^
可以改成:
根据 C Standard,具有静态储存期的变量(e.g. 带有 static 修饰符者等),
如果没有显式初始化的话,根据不同的资料型态予以进行以下初始化:
若变量为算术型别 (int , double , ...) 时,初始化为零或正零。
若变量为指标型别 (int*, double*, ...) 时,初始化为 null 指标。
若变量为复合型别 (struct, double _Complex, ...) 时,递回初始化所有成员。
若变量为联合型别 (union) 时,只有其中的第一个成员会被递回初始化。
虽然这好像有点太琐碎了,但是主要还是
null 指标不一定是 0, 还有 union 不是所有成员都会被初始化的问题。
Reference: C99 standard (n1256): Section 6.7.8 Initialization (#10)