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

时间:2016-09-12 05:33:05

标签: 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

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

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

我知道必须初始化一个数组。当我玩c ++数组时,我遇到了这种情况。我只想更深入地了解记忆中发生的事情。

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

3 个答案:

答案 0 :(得分:0)

未初始化意味着它包含该内存位置的内容。也就是说,它可以包含任何内容。

这就是为什么你应该总是初始化变量。

答案 1 :(得分:0)

我相信如果未明确初始化数组元素它可以是任何内容,通常是该内存地址中已有的内容。

换句话说,如果你没有初始化它们,它们等于存储在那个存储位置中的任何内容。换句话说,垃圾

答案 2 :(得分:0)

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

要清除冗余数据,只需初始化数组。