【发布时间】:2021-04-08 16:01:57
【问题描述】:
我经常犯错误,没有初始化数组的值。 从理论上讲,我们知道在这种情况下,安排应该有浪费的价值。
然而,在实践中,许多值被初始化为零。 因此,程序对小例子感到满意。 这使得调试变得困难。
你能告诉我为什么会这样吗?
【问题讨论】:
-
也看看这里,特别是初始化数组的部分:cplusplus.com/doc/tutorial/arrays
-
没有所谓的“浪费价值”。访问未初始化的数组元素(或变量)的值会产生未定义的行为 - 即相关的 C 或 C++ 标准没有定义 - 甚至没有约束 - 会发生什么,因此访问未初始化的数组元素可能会给出
0或42,它可能会擦除您的硬盘驱动器,或执行其他操作 - 根据标准,所有这些可能性都是正确的结果。一些(但不是全部)主机系统在将内存提供给您的程序之前将其初始化为零。真正的解决方案是让您确保所有变量或数组都已初始化 -
你是说你初始化了一个数组的一些值,但不是全部?如果是这种情况,那么任何未显式初始化的元素都将设置为 0。