可能重复:
Does gcc automatically initialize static variables to zero?
函数内的静态声明对象是否保证使用0
初始化?
例如:
int func(void)
{
static int x;
...
}
第一次调用x = 0
时,标准是否承诺func()
?
答案 0 :(得分:5)
5.1.2执行环境
......静态存储中的所有对象都应该是 在程序之前初始化(设置为初始值) 启动。
并且它还说用static
限定符定义的局部变量具有“静态存储”,并且在没有初始化的情况下,所有对象都为它们采用正确类型的值0。
答案 1 :(得分:1)
简短的回答,是的。
静态,未初始化的变量驻留在可执行文件的.bss
段中,操作系统在程序启动时分配并将它们归零,然后调用main
。
答案 2 :(得分:1)
没错。如需更多见解,您可以参考前面提到的完全相同的问题:
答案 3 :(得分:0)
是的,它确实被初始化为零。但是,使用静态方法变量可能仍然不是一个好主意。 C#明确避免了混淆,并且已经放弃了对静态方法变量的支持。
答案 4 :(得分:0)
所有静态变量都存储在内存部分的数据集中,其中所有变量都设置为默认值。