2

我是 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

4 回答 4

11

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

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

int myarray[8] = {};
于 2013-07-23T02:26:28.087 回答
1

初始值不保证为 0。

于 2013-07-23T02:26:15.597 回答
1

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

int *arr = new int[8]();
于 2013-07-23T03:06:47.533 回答
0
int myarray[8];

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

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

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

快乐编码!

于 2013-07-23T08:37:52.817 回答