先说结论
- 结构体指针需要初始化
- 结构体指针的成员指针同样需要初始化
- 结构体变量定义的时候就已经分配了内存空间,而上面两个确没有
struct test{
int i;
struct buf *p;
} aa;
//定义结构体aa
struct buf{
char data[512];
struct buf *prev;
struct buf *next;
} ;
对象t定义后里面的成员变量初始化为0了,但p并没有malloc分配空间,因此对aa.p->的任何赋值操作都会出错,解决方法:malloc分配空间 a.p = (struct buf*) malloc(sizeof(struct buf));p.prev = 之后,才可以赋值了。