我编写了以下代码并在 xcode 中设置了一个断点:
#include <iostream>
using namespace std;
int main(int argc, const char * argv[])
{
int array[12];
return 0; //Set breakpoint here
}
调试器面板显示前 6 个元素包含非零 int
。这是为什么?
最佳答案
int array[12];
这声明了一个包含 12 个元素的数组,而不是一个空数组。
此外,它在没有初始化器的情况下声明它们,这(在函数范围内)意味着它们将被默认初始化。对于 int
,这意味着不执行任何初始化,并且生成的 int
将具有不确定的值。此行为在 C++ 规范中定义。
如果你想对数组进行零初始化,那么你需要给它一个初始化器:
int array[12] = {};
这不是强制行为的原因是初始化会产生性能成本,并且一些程序被编写为可以正常工作而无需遭受这种损失。
关于c++ - 为什么我的空数组不为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19233050/