声明与定义类型相同的结构变量

时间:2019-06-29 06:04:19

标签: java c

struct Phant {
   int y;
   struct Phant y;
};

在这段代码中,我遇到了编译错误。

在Java中编写相同的东西时,只需稍作更改,即用类替换struct,代码就可以完美运行

class Ded {
    int y;
    Ded s = new Ded();
}

为什么第二个片段起作用时第一个片段出现编译错误?

1 个答案:

答案 0 :(得分:0)

无论语言如何,struct都不能包含自身。它将无限大。

但是,很可能像Java示例一样,它可能包含一个指向自身的指针/引用(因为指针具有固定的已知大小)。用C编写,如下所示:

struct Phant {
   int i;
   struct Phant *p;
};

struct Phant p1;
p1.p = malloc(sizeof(struct Phant));