初始化结构的2d数组

时间:2013-03-18 15:01:40

标签: c++ multidimensional-array constructor struct

通常,struct的成员变量的初始化将在其构造函数

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

但是我如何将2d数组初始化为0或空值?

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

如果我没有初始化它们,它们将包含我不想要的垃圾值。

2 个答案:

答案 0 :(得分:3)

我会使用memset

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

memset使用给定值(在本例中为零)将内存块填充到给定大小(以字节为单位)。

答案 1 :(得分:1)

  

如何将2d数组初始化为0或空值?

对于普通结构,Bellow初始化为0:

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

对于更高级的初始化类型,您可以查看C++11 initializer listsBoost.Assign