在C中创建Typedef结构的Typedef指针

在C中有关于typedef的问题

我已经定义了struct:

 typedef struct Node { int data; struct Node *nextptr; } nodes; 

我如何创建struct node的typedef指针?

谢谢 !

你可以同时输入def:

 typedef struct Node { int data; struct Node *nextptr; } node, *node_ptr; 

这可能很难理解,但它与C的声明语法的工作方式有很大关系(即为什么int* foo, bar;声明bar为int而不是int*

或者您可以在现有的typedef上构建:

 typedef struct Node { int data; struct Node *nextptr; } node; typedef node* node_ptr; 

或者你可以从头开始,就像你输入其他任何东西一样:

 typedef struct Node* node_ptr; 

根据我的喜好,最简单,最清晰的方法是对struct和指针进行structtypedef前向声明:

 typedef struct node node; typedef node * node_ptr; struct node { int data; node_ptr nextptr; }; 

虽然我会说我不太喜欢指针typedef

在前向声明中使用与typedefstruct标记相同的名称可以使事情更加清晰,并且可以简化API与C ++的兼容性。

此外,您应该更清楚地了解类型的名称,它们是否代表一个节点或一组节点。

像这样:

 typedef nodes * your_type; 

要么:

 typedef struct Node * your_type; 

但我更喜欢第一个,因为你已经为struct Node定义了一个类型。