为什么我的空数组不为空?

Mat*_*son 3 c c++ xcode

我编写以下代码并在xcode中设置断点:

#include <iostream>
using namespace std;
int main(int argc, const char * argv[])
{
    int array[12];
    return 0;        //Set breakpoint here
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

调试器面板显示前6个元素包含非零ints.为什么是这样?

bam*_*s53 7

int array[12];
Run Code Online (Sandbox Code Playgroud)

这声明了一个包含12个元素的数组,而不是一个空数组.

此外,它声明它们没有初始化程序,(在函数范围内)意味着它们将被默认初始化.因为int这意味着不执行初始化,结果ints将具有不确定的值.此行为在C++规范中定义.

如果你想零初始化数组,那么你需要给它一个初始化器:

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

这不是强制行为的原因是初始化存在性能成本,并且一些程序被编写为正常工作而不需要受到惩罚.