首页 > 解决方案 > 指向不存在的结构的指针作为另一个结构中的成员变量是什么意思?

问题描述

我在 C 中看到过这样的代码块:

struct Struct1
{
    struct Struct2* var;
}

我想知道这个例子中的确切含义是什么。Struct2在这段代码中,这是第一次使用名称Struct2

标签: cpointersstructdeclarationincomplete-type

解决方案


该类型struct Struct2是不完整的类型(前提是在结构Struct1的声明之前没有定义该结构)。如果需要定义结构,可以在其他地方定义。但是像这样指向这种类型的指针

struct Struct2 *var;

是一个完整的类型。

例如,您可以struct List通过以下方式声明结构

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

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

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

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

推荐阅读