https://blog.youkuaiyun.com/weixin_40539125 https://blog.youkuaiyun.com/weixin_40539125/article/details/84141839
结构体中的各个成员所需的存储空间大小是编译的时候确定的,在结构体定义中如果定义自身类型的成员,因为此时结构体大小还不确定,所以此时定义的成员所需的存储空间大小就不确定,因此编译不会通过。
但是可以定义成自身类型的指针,因为指针所需的存储空间大小是可以确定的。
比如:
struct test {
struct test *pt; /* pt是指针,指针占用空间已经确定,因此可以 */
struct test t; /* 在结构体还没定义完之前,编译器不知道该类型所需多大空间,
所以在这里会出错 */
};
本文探讨了在C语言中结构体定义时成员变量自引用的问题。解释了为什么直接使用结构体类型作为成员会导致编译错误,而使用指向同一结构体类型的指针则可行的原因。
805

被折叠的 条评论
为什么被折叠?



