【发布时间】:2021-09-13 20:27:40
【问题描述】:
在调试我的程序时,我注意到我的二维数组的一些元素包含非零值。
float Ak[2][2];
Ak[0][0] = 1;
Ak[1][1] = 1;
当我运行此代码时,Ak[0][0] 和 Ak[1][1] 按预期为 1,但 Ak[0][1] 为 1.081,我实际上预计为 0。
这可能是因为数组没有被隐式初始化。但总是这样吗?当我想要特定行为时,我是否总是必须初始化我的数组,或者在某些情况下编译器会自动执行此操作?是否依赖于编译器?
还有一个几乎最重要的问题:这种行为是在哪里指定的? (我的论文需要引用)
【问题讨论】:
-
局部变量没有任何默认初始化。它们开始时包含 0 的可能性与任何其他看似随机的值一样。这适用于数组和普通变量。您可以阅读不同类变量的初始化规则摘要here。
-
本地非静态变量未初始化。局部静态变量被隐式初始化为零,就像非局部变量一样。
标签: arrays c initialization