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

标签 java c

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/

相关文章:

java - JTabbedPane FlowLayout 抛出 ArrayIndexOutOfBoundsException

java - Spring MVC - 从 web.xml 注入(inject)上下文参数

java - 使用 IntelliJ IDEA 调试时如何解析 JSP 中的 Spring 模型变量?

C 在多线程程序中在哪里定义互斥体?

将大端转换为小端的 C/C++ 代码

java将字符串与变量名匹配并传递变量的值

java - 使用单独的线程更新 JTable

c - 关闭(STDOUT_FILENO)行为后到终端的标准输入输出

c - 如何初始化一个 wchar_t 变量?

c - Sum (i...j) - 是否有更有效/更优雅的解决方案?