c++ - 未初始化的本地自动数组 C++

标签 c++ arrays c++11

<分区>

#include <iostream>
using namespace std;
int main()
{
  int a[6];
  for(int i=0;i<6;i++)
  {
    cout <<a[i]<<" ";
  }
  cout << endl;
  return 0;
}

我有一段简单的 C++ 代码,如上。该数组是在堆栈上创建的,未初始化。

我得到以下输出:0 0 0 0 1569540800 32767

我真的不明白最后两个数字是从哪里来的。 更具体地说,我不知道 a[4] 和 a[5] 中的值是什么。我尝试多次运行该程序。 a[4] 每次都在变化,而 a[5] 总是 32767。

我还尝试创建一个长度为 4 和 8 的未初始化数组。在这些情况下,输出全为零。

我明白数组必须被初始化。我在玩 c++ 数组时遇到了这种情况。我只是想更深入地了解内存中发生的事情。

我的环境是 Mac 上的 clang++。

最佳答案

必须初始化数组 a[6]。默认情况下,这将是未初始化的。因此,它的任何元素都没有设置为任何特定值,它们的内容在声明数组时是不确定的。

要删除冗余数据,只需初始化您的数组即可。

关于c++ - 未初始化的本地自动数组 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39443878/

相关文章:

c++ - 将 cin 用于 char 数组

java - 使用java的数组的所有可能子序列

java - 数组中的下一个和上一个按钮每次按下都会在数组中循环太多次(超过一次)

c++ - 绕过 cin 语句的未初始化局部变量

c++ - 如何在不分配更多存储空间的情况下从数组初始化 vector ?

c++ - 无法在 VIsual Express 2012 中包含 libcurl

c++ - 重置派生类对象

c++ - 哪个系统软件负责运行时检查

c++ - 带有额外模板参数的构造函数

java - 如何使用二维数组创建方法