使用自定义类型在 C 中创建引用自身的结构

问题描述 投票:0回答:2

我想创建一个带有指向相同类型属性的指针的结构。

理想情况下,我想要这样的东西,但这会导致编译错误:

typedef struct {

  int data;
  Node *next;

} Node;

我在这个场景中想要的解决方案是:

typedef struct Node_s {

  int data;
  struct Node_s *next;

} Node_t;

这是一种有效的方法还是会导致任何明显的问题?

c struct typedef
2个回答
2
投票

这是在 C 中声明自引用结构的有效且惯用的方法。

您不必为标签和 typedef 名称引入不同的名称,以下内容也很好:

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

不存在名称冲突,因为这些名称位于不同的命名空间中。

另一种有效的方法是这样的:

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

2
投票

您可以将

struct
预先声明为

typedef struct Node_s Node;

并在下面声明其字段。

© www.soinside.com 2019 - 2024. All rights reserved.