在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
和指针进行struct
和typedef
前向声明:
typedef struct node node; typedef node * node_ptr; struct node { int data; node_ptr nextptr; };
虽然我会说我不太喜欢指针typedef
。
在前向声明中使用与typedef
和struct
标记相同的名称可以使事情更加清晰,并且可以简化API与C ++的兼容性。
此外,您应该更清楚地了解类型的名称,它们是否代表一个节点或一组节点。
像这样:
typedef nodes * your_type;
要么:
typedef struct Node * your_type;
但我更喜欢第一个,因为你已经为struct Node
定义了一个类型。