未初始化的本地自动数组

Uninitialized local automatic array c++

本文关键字:数组 初始化      更新时间:2023-10-16
#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 00 0 1569540800 32767.

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

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

我理解数组必须初始化。我在使用c++数组时遇到了这种情况。我只是想更深入地了解内存中发生了什么。

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

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

要去掉多余的数据,只需初始化你的数组。

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

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

我认为如果数组元素没有显式初始化,可以是任何值,通常是已经在内存地址中的值。

换句话说,如果不初始化它们,它们等于存储在该内存位置中的。换句话说,垃圾