C中结构体在定义时可以定义自身类型的成员吗?

不行,因为结构体中的各个成员所需的存储空间大小是编译的时候确定的,在结构体定义中如果定义自身类型的成员,因为此时结构体大小还不确定,所以此时定义的成员所需的存储空间大小就不确定,因此编译不会通过。

但是可以定义成自身类型的指针,因为指针所需的存储空间大小是可以确定的。

比如:

struct test {
    struct test *pt;   /* pt是指针,指针占用空间已经确定,因此可以 */
    struct test t;    /* 在结构体还没定义完之前,编译器不知道该类型所需多大空间,
                         所以在这里会出错 */
}; 

更多知识:C结构体向前声明一种用法

猜你喜欢

转载自blog.csdn.net/weixin_40539125/article/details/84141839