指向不存在的结构的指针作为另一个结构中的成员变量是什么意思?

What is the meaning of pointer to non-existing struct as a member-variable in another struct?

我见过这样的 C 代码块:

struct Struct1
{
    struct Struct2* var;
}

我想知道 Struct2 在这个 example.In 代码中的确切含义,这是第一次使用名称 Struct2

类型struct Struct2是一个不完整的类型(前提是在结构体Struct1的声明之前没有结构体的定义)。如果需要结构的定义,它可以在别处定义。但是像那样指向这种类型的指针

struct Struct2 *var;

是一个完整的类型。

例如,您可以按以下方式声明一个结构struct List

struct List
{
    struct Node *head;
    struct Node *tail;
};

在此声明中不需要结构的完整定义struct Node。结构 struct List 包含两个指向列表第一个和最后一个节点的指针。

然后在下面的某个地方,甚至在另一个 header 中,您可以定义结构 struct Node,例如

struct Node
{
    int data;
    struct Node *next;
};