对C中的typedef
提出疑问。
我已经定义了struct:
typedef struct Node {
int data;
struct Node *nextptr;
} nodes;
如何创建typedef
节点的struct
指针
谢谢!
答案 0 :(得分:12)
您可以同时输入dede:
typedef struct Node {
int data;
struct Node *nextptr;
} node, *node_ptr;
这可能很难理解,但它与C的声明语法的工作方式有很大关系(即为什么int* foo, bar;
将bar
声明为int而不是{{} 1}}
或者你可以在现有的typedef上构建:
int*
或者你可以从头开始,就像你输入其他任何东西一样:
typedef struct Node {
int data;
struct Node *nextptr;
} node;
typedef node* node_ptr;
答案 1 :(得分:3)
根据我的口味,最简单,最清晰的方法是将struct
和typedef
的前向声明转发给struct
和指针:
typedef struct node node;
typedef node * node_ptr;
struct node {
int data;
node_ptr nextptr;
};
虽然我说我不太喜欢指针typedef
。
在前向声明中使用与typedef
和struct
标记相同的名称可以使事情更加清晰,并使用C ++简化API兼容性。
此外,您应该更清楚地了解您的类型的名称,它们是否代表一个节点或一组节点。
答案 2 :(得分:1)
像这样:
typedef nodes * your_type;
或者:
typedef struct Node * your_type;
但我更喜欢第一个,因为你已经为struct Node
定义了一个类型。