C - 用于定义的 typedef 结构



为什么使用 Node(..Node{..),如下所示,在定义结构类型时会产生编译时错误。

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

有一个非常基本的概念让我感到困惑,请建议或参考我相关链接。

Typedef 用于为其他类型提供别名。它不是宏,它不能代替使用地点的东西。

正确的定义可能是:

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

至少,你需要它说

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

但是,您可以这样做:

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

现在,您可以通过以下方式轻松创建结构Node实例:

Node node, *pNode;  

其中 node 是类型 struct Node 的新变量的名称。
*pNode 是指向相同的指针,初始化如下:

  pNode = &node;

最新更新