c++ - 为什么我的空数组不为空?

标签 c++ c xcode

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

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

enter image description here

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

最佳答案

int array[12];

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

此外,它在没有初始化器的情况下声明它们,这(在函数范围内)意味着它们将被默认初始化。对于 int,这意味着不执行任何初始化,并且生成的 int 将具有不确定的值。此行为在 C++ 规范中定义。

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

int array[12] = {};

这不是强制行为的原因是初始化会产生性能成本,并且一些程序被编写为可以正常工作而无需遭受这种损失。

关于c++ - 为什么我的空数组不为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19233050/

相关文章:

c - 类型转换空指针的原因是什么?

Xcode:如何更改我的项目文件夹名称,而不会出现构建问题?

iphone - Xcode - 多个 URL 方案

c++ - 语法错误 : EOF in backquote substitution make: *** [mainwindow. o] 错误 2

c++ - 使用 VS2010 将 Linux C++ 控制台应用程序引入 Win32 C++ 应用程序,<algorithm> 的搜索功能不再有效

c++ - Objective-C 弧 : is it correct to use a block as C++ callback

iphone - 应用程序在 xcode 中释放数组对象时崩溃

c++ lib 为初学者使用 REST api

c - 有没有办法将所有指向已释放内存的指针设置为 NULL?

c++ - 从 C++ 调用 C 函数时,如何告诉 gcc 放宽对类型转换的限制?