C/C++结构体初始化

来源:互联网 发布:保罗乔治身体数据 编辑:程序博客网 时间:2024/06/10 23:54

针对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环境下是不合法的。

原创粉丝点击