gpt4 book ai didi

c - C中的嵌套结构

转载 作者:太空宇宙 更新时间:2023-11-04 00:30:39 27 4
gpt4 key购买 nike

struct s{ 
int a;
struct s b;
};

上面的代码段抛出错误 error: field 'b' has incomplete type while

struct s{ 
int a;
struct s *b;
};

没有给出任何错误。我不明白为什么允许指针而不是非指针变量!

最佳答案

类成员在声明的时候必须有完整的类型,这样才能根据它们的大小来决定类的布局。

在类定义中,类本身是不完整的,所以不能声明相同类型的成员。无论如何这都是不可能的(至少如果有任何其他成员的话),因为类必须比它自己大。

指针是一个完整的类型,即使它指向的类型不是,所以您可以将类成员声明为指向类类型的指针。

(注意:我使用“类”这个词,因为我是一名 C++ 程序员。我只是注意到这个问题也被标记为 C,并且 C++ 已经被删除了。我相信答案仍然是正确的那种语言,如果你用“结构”替换“类”,但我不完全确定,因为它们是不同的语言。如果你只询问一种语言会更好,因为存在差异(有时是主要的,有时是细微的)语言之间。)

关于c - C中的嵌套结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20244803/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com