struct Phant {
int y;
struct Phant y;
};
在此代码中,我收到编译错误。
在 Java 中编写相同的内容,只需稍作更改,即用类替换结构,代码就可以完美运行
class Ded {
int y;
Ded s = new Ded();
}
为什么我在第一个代码片段中遇到编译错误,而第二个代码片段却有效?
最佳答案
无论何种语言,struct
都不能包含自身。它将无限大。
但是,它可能包含一个指向自身的指针/引用,就像在 Java 示例中一样(因为指针具有固定的已知大小)。在 C 语言中,写法如下:
struct Phant {
int i;
struct Phant *p;
};
struct Phant p1;
p1.p = malloc(sizeof(struct Phant));
关于java - 声明与其定义类型相同的结构变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56815427/