已初始化的已分配数组的值

时间:2011-05-04 05:24:20

标签: c++ arrays

如果我有:

int array[20];

如果尚未初始化array[0],那么它的价值是多少?有没有办法检查它是否已初始化?

6 个答案:

答案 0 :(得分:15)

“......假设我有......”你有在哪里

如果你在命名空间作用域中有这样的东西,那么它是一个具有静态存储持续时间的对象,它始终是零初始化的。

如果你在本地范围内有这样的东西,那么它是一个具有自动存储持续时间的对象,它根本没有初始化。 array[0]的值无法预测。不,没有办法判断某些事情是否被故意初始化。

答案 1 :(得分:4)

  

假设那里没有任何东西被初始化的数组[0]的值是多少?

它取决于数组是在文件范围还是在函数范围中定义。在函数作用域中,数组元素将包含未指定的值,而在文件作用域中,它们将初始化为零。

答案 2 :(得分:3)

它基本上是垃圾或特定记忆点中的任何值。您无法检测是否已初始化否。

答案 3 :(得分:0)

它将处于所谓的不确定状态,在大多数实现中意味着当内存被数组占用时内存中的任何内容 - 通常称为垃圾。

答案 4 :(得分:0)

它是未定义的,取决于编译器和发行版的味道:某些编译器会在调试时用模式填充它,但不会在发布时执行它。 在任何情况下,依赖于编译器并尝试检查它而不是正确初始化是一种不好的做法,可能会引导您遇到重大问题。

答案 5 :(得分:0)

  

有没有办法检查它是否已初始化?

没有必要检查。除非您明确初始化它,否则它将保持未初始化状态。