为什么结构体中的成员类型不能是该结构体本身,却可以是以该结构体类型为基本型的

2025-06-27 02:44:26
推荐回答(3个)
回答1:

我的理解,结构体的在构造的时候肯定不能引用自身,不然就会形成嵌套死循环。

通俗一点的理解,定义一个结构体的时候,在定义其成员的时候,这个结构体还未完成。发现引用了一个还未定义完成的结构体(也就是他自身),编译器会出错把。

“以该结构体类型为基本型的” 后面是不是还有话啊,就这里看不懂 ,我是不是可以这样理解,以该结构体类型为父的其他结构体。

那么这个“其他结构体”必然是已经完成构造的,在最原始的父结构体中引用,编译器不会出错,但是我觉得用起来估计会有些毛病。

回答2:

准确的说来不是结构体还为完成,而是在内存大小还没有确定,编译器无法得知内存占用。所以编译器会出错。而不是为完成,你定义这个结构体的指针就没问题,因为指针在WIN32下都是4个字节

回答3:

你这话是什么意思?
struct node
{
int a;
struct node *p;
};
你是说这样不行吗?