在 C/C++ 中使用自引用结构指针的结构声明中内存如何工作?

How does memory work in declaration of structure which uses self-referential structure pointer in C/C++?

在C/C++的结构声明中,我们必须使用自引用结构指针而不是结构本身。

//编译错误

struct stack {
    int overflow;
    stack p;
}

struct stack {
    int overflow;
    stack* p;
}

一个报错另一个报错(声明) 我很好奇在声明时使用stack* p;时内存区域的操作以及如何使它成为可能。

这个

struct stack {
    int overflow;
    stack p;
}

试图包含自己,那么它应该有多大?有了它自己的一个副本,它看起来像这样

 int ov;
 {
     int ov;
     stack p;
 }

但是堆栈 p 需要扩展 - 所以我们得到

 int ov;
 {
     int ov;
    {
         int ov;
         stack p;
    }
 }

但是堆栈 p 需要扩展 - 所以我们得到

 int ov;
 {
     int ov;
    {
         int ov;
         {
             int ov;
             stack p;
          }
    }
 }

但是堆栈 p 需要扩展 - 所以我们得到......永远。

换个角度看,struct应该包含多少个int溢出?

指针一是这样工作的

  int overflow;
  stack *p;

结束。该结构具有明确定义的大小,一个整数和一个指针