C++中数组的默认值是多少?

mys*_*ick 6 c++ arrays

如果我要创建一个数组int* array = new int[10];并用值填充数组的一部分,我如何检查填充了多少数组?我想循环并检查每个值是否是默认值,但我不确定每个数组元素的默认值是什么。它会是null 0垃圾值还是垃圾值?

Gar*_*day 13

这是在创建数组时如何在 C++ 中设置默认值。

int array[100] = {0};
Run Code Online (Sandbox Code Playgroud)

现在每个元素都设置为0. 如果不这样做,每个元素都是垃圾,如果使用,将是未定义的行为。

并非所有语言都是这样。Java 在声明数据结构时有默认值,但 C++ 没有。

  • 谨防!这不能为数组设置其他值(例如“1”)。我建议通过删除误导性的“{0}”并将其替换为空大括号“{}”来编辑此答案。 (8认同)
  • @ThariqNugrohotomo 具体来说,`{x, y, z}` = `{x, y, z, 0, 0, 0, ...}`。因此,“{0}”=“{0, 0, 0, 0, ...}”,但“{1}”=“{1, 0, 0, 0, ...}”。 (3认同)

Sur*_*ine 5

没有默认值,所以它是垃圾。


R S*_*ahu 5

你不能做你希望做的事,而不是当类型是int.

数组的未初始化元素将具有不可预测的值。此外,访问这些元素会导致未定义的行为。

您可以在分配时使用以下命令将数组元素初始化为标记值:

int* ptr = new int[10]{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1};
Run Code Online (Sandbox Code Playgroud)

如果-1没有,请使用任何适合您的哨兵值。