我可以在 C 中将结构作为其自身结构的成员吗?

Can I have a Structure as member of its own structure in C?

我可以在 C 中以其自己的结构(递归结构)创建一个结构的实例吗(尽管我现在当然可以,因为这有点奇怪和棘手)?

喜欢:

int main(void)
{
    struct type
    {
         char name[20];
         char address[35];

         struct type;
    };

    return 0;
}

当然,编译器给我警告:

warning: declaration does not declare anything  

但是he/it让它通过并给我一个可执行程序。


因为我想用 C++ 编译器编译同一个程序,he/it 抛出了一个错误:

 error: ‘main()::type::type’ has the same name as the class in which it is declared

所以问题是针对 C,而不是 C++。


提前致谢。

首先,struct type;是前向声明,不是成员变量定义。其次,不,你不能这样做,你需要使用指针。

要使用一个结构,它必须被完全定义,定义必须结束(结束})才能使用。否则编译器不知道结构的完整大小,也不知道它有多大以及必须为结构实例保留多少内存。

但是要创建指向结构的指针,编译器只需要知道结构标记(type 在您的例子中)。那是因为指针的大小在编译时是已知的。那时不需要知道完整结构本身的大小。