通常,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];
}
如果我没有初始化它们,它们将包含我不想要的垃圾值。
答案 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 lists和Boost.Assign