繁体   English   中英

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

[英]Why is my empty array not empty?

我编写以下代码并在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] = {};

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

因为你只声明了数组,所以没有初始化它。

当你声明发生的唯一事情是你保留一定的内存区域。 已存储在该区域的内容可以是其他操作/程序遗留的任何内容。

只保证全局变量和静态变量(包括数组)的初始值为零。 对于本地数组(如在代码中),您可以使用以下命令初始化为零:

int array[12] = {0};

查看此链接以获取更多详细信息: 如何在C中将数组初始化为0?

除非你告诉它,否则C ++编译器不会初始化变量。

因为您的数组未初始化 调试器面板显示存储在该位置的先前值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM