看树的表示法时发现
总结一下结构体自引用问题
typedef struct _A
{
int a;
struct _A *b;
}A;
结构体A中定义了一个指针b,该指针指向一个结构体A类型。为什么可以这么做呢?因为编译器在编译时已经知道一个指针所占的空间长度4个字节可以为其分配空间。而下面的定义是非法的:
typedef struct _A
{
int a;
struct _A b;
}A;
首先,结构体还没有定义完,编译器不知道结构体A需要多少空间存储,无法为成员b分配空间,另外成员b是一个完整的结构体,数据b中也会有一个结构体b1,而b1中同样有一个结构体b2……永无止境。