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

时间:2010-12-19 04:32:05

标签: c typedef

对C中的typedef提出疑问。

我已经定义了struct:

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

如何创建typedef节点的struct指针

谢谢!

3 个答案:

答案 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)

根据我的口味,最简单,最清晰的方法是将structtypedef的前向声明转发给struct和指针:

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

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

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

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

答案 2 :(得分:1)

像这样:

typedef nodes * your_type;

或者:

typedef struct Node * your_type;

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