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 に答える