Unn*_*nni 1 c nested structure
struct s{
int a;
struct s b;
};
Run Code Online (Sandbox Code Playgroud)
上面的代码段引发错误 error: field 'b' has incomplete type而
struct s{
int a;
struct s *b;
};
Run Code Online (Sandbox Code Playgroud)
没有任何错误.我不明白为什么这是指针允许但不是非指针变量!
类成员在声明时必须具有完整的类型,以便它们的大小可用于确定类布局.
在类定义中,类本身是不完整的,因此您不能声明相同类型的成员.无论如何这都是不可能的(至少如果还有其他成员),因为班级必须比自己大.
指针是一个完整的类型,即使它指向的类型不是,所以你可以声明一个类成员是一个指向类类型的指针.
(注意:我使用"class"这个词,因为我是一名C++程序员.我只是注意到这个问题也被标记为C,并且C++已经被删除了.我相信如果你替换C++的答案仍然是正确的"类"与"结构",但我不完全确定,因为它们是不同的语言.如果你只询问一种语言会更好,因为语言之间存在差异(有时是主要的,有时是微妙的).)