我遇到了C ++数组初始化的麻烦

时间:2013-07-23 02:23:15

标签: c++ arrays

我是C ++的新手。最近,我一直坚持使用简单的C ++代码代码。如果你能指出究竟是什么问题,我将非常感激。代码如下:

// used to test function of fill
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
   int val = 0;
   int myarray[8];
   //fill(myarray,myarray+2,1);
   for(;val < 8;++val){
      cout << myarray[val];
      cout << endl;
      }
}

它打印出来了:

-887974872
 32767
 4196400
 0
 0
 0
 4196000
 0

问题是我认为没有初始化的数组的默认值(在这种情况下,它的大小是8)将是(0,0,0,0,0,0,0,0)。但那里似乎有一些奇怪的数字。谁能告诉我发生了什么以及为什么?

4 个答案:

答案 0 :(得分:11)

元素是未初始化的,即它们包含垃圾值。

如果要将数组元素初始化为0,请使用:

int myarray[8] = {};

答案 1 :(得分:1)

初始值不保证为0.

答案 2 :(得分:1)

如果你想让一个数组有一个初始值,你可以这样做:

int *arr = new int[8]();

答案 3 :(得分:0)

int myarray[8];

这是一个数组的简单声明,即你告诉编译器“嘿!我将使用大小为8的整数数组”。现在编译器知道它存在,但它不包含任何值。它有垃圾值。

如果您打算初始化数组(自动),则需要添加一个空白的初始化序列。

int myarray[8]={}; //this will do

快乐的编码!