有没有可能在c中声明这样的结构

有没有可能在c中声明这样的结构,c,structure,C,Structure,大家好, 我对c和学习结构是新手。我遇到了一个结构声明,对它的有效性有疑问 struct a { int x; struct a b; } 有这样的结构声明好吗?如果不好,为什么 否。结构不能包含自身。这根本没有任何意义,因为结果类型将是无限大的 换句话说,你的结构包含一个自身的实例,而这个实例又包含一个自身的实例,这个实例又包含一个自身的实例,如此类推 从形式上看,您试图声明类型不完整的结构成员b。在C中声明类型不完整的结构成员是非法的。否。结构不能包含自身。这根本没有任何意义,因为结果类

大家好, 我对c和学习结构是新手。我遇到了一个结构声明,对它的有效性有疑问

struct a
{ 
int x;
struct a b;
}

有这样的结构声明好吗?如果不好,为什么

否。结构不能包含自身。这根本没有任何意义,因为结果类型将是无限大的

换句话说,你的结构包含一个自身的实例,而这个实例又包含一个自身的实例,这个实例又包含一个自身的实例,如此类推


从形式上看,您试图声明类型不完整的结构成员
b
。在C中声明类型不完整的结构成员是非法的。

否。结构不能包含自身。这根本没有任何意义,因为结果类型将是无限大的

换句话说,你的结构包含一个自身的实例,而这个实例又包含一个自身的实例,这个实例又包含一个自身的实例,如此类推


从形式上看,您试图声明类型不完整的结构成员
b
。在C中声明类型不完整的结构成员是非法的。

这将不起作用,因为如果结构是自包含的,编译器无法确定结构的大小

有效的方法是:

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

然后在结构中有一个指向同一结构的指针。这可以用于链接列表。

这将不起作用,因为如果结构是自包含的,编译器无法确定结构的大小

有效的方法是:

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

然后在结构中有一个指向同一结构的指针。这可用于链接列表。

编译此文件时,会出现类似以下错误:

src.c: In function `main':
src.c:4: field `b' has incomplete type
但是,使用
结构a*b
是非常好的


编译此文件时,会出现类似以下错误:

src.c: In function `main':
src.c:4: field `b' has incomplete type
但是,使用
结构a*b
是非常好的


谢谢@Andrey,但在定义类时,我们可以在同一个类中创建该类类型的变量class@AMIT:不,我们不能。我不知道你是从哪里得到这个主意的。C和C++中都不可以将类/结构本身包含进来。谢谢@安德烈,但是在定义类时,我们可以在同一个类中创建一个类的变量。class@AMIT:不,我们不能。我不知道你是从哪里得到这个主意的。C和C++中都不能将类/结构本身包含进去。