0

通常、構造体のメンバー変数の初期化は、そのコンストラクター内で行われます

struct line
{
  line()
  {
     length=0;
     name[0] = '\0';
  }
  int length;
  char name[10];
};

しかし、2次元配列を0またはnull値に初期化するにはどうすればよいですか?

struct myValues
{
  myValues()
  {
    my2dDimension[0][0] = { 0 }; //shows error:expected an expression
  }
  int my2dDimension[20][2];
}

それらを初期化しないと、望ましくないガベージ値が含まれます。

4

2 に答える 2

3

memsetを使用します

struct myValues
{
  myValues()
  {
    memset(my2dDimension, 0, sizeof my2dDimension);
  }
  int my2dDimension[20][2];
}

memset は、メモリのブロックを指定された値 (この場合はゼロ) で、指定されたサイズ (バイト単位) で埋めます。

于 2013-03-18T15:07:04.463 に答える
1

2次元配列を0またはnull値に初期化するにはどうすればよいですか?

以下は、プレーンな構造体の 0 への初期化です。

struct SomeStruct{};
SomeStruct someStruct;
::memset ( &someStruct, 0, sizeof(SomeStruct) );

より高度なタイプの初期化については、C++11 初期化子リストBoost.Assignを参照してください。

于 2013-03-18T15:07:15.950 に答える