针对C/C++中定义的结构体,如何初始化其实是一门很深的学问,很多项目的bug是由结构体初始化造成的。
struct A
{
int a;
int b[2];
char *c;
string d;
}A1
对上面的结构体,如何针对这四个不同类型的变量进行初始化?
1.最直接的方式
struct A a={1,{1,2},NULL,""};
2.利用指针
A *st=new A();
st->a=1;
st->b[0] = 1;
st->b[1] = 2;
st->c=NULL;
st->d="";
delete st;
3.利用memset进行初始化
A st;
memset(&st,0,sizeof(st));
注意:该方法是按照2字节进行初始化,只能设置为0,如果设置其他值,将不能得到期望的初始值。string类型初始化,在linux下头指针为空,所以不能直接被赋值。
例如:
st.c="array";
该操作linux环境下是不合法的。