为结构定义typedef 2次

时间:2017-01-31 19:07:48

标签: c struct typedef

我在代码中看到了类似的东西:

struct listnode{
char data;
struct listnode *nextptr;}

typedef struct listnode LISTNODE;

typedef LISTNODE *listnodeptr;

那为什么他会使用typedef 2次???

2 个答案:

答案 0 :(得分:0)

这里有两个typedef不重复,它们只有两个不同的类型。

  • typedef struct listnode LISTNODE;创建的类型LISTNODEstruct listnode的别名
  • typedef LISTNODE *listnodeptr;创建的类型listnodeptrLISTNODE *的别名,即struct listnode *

答案 1 :(得分:0)

第一个typedef声明了结构本身的别名

typedef struct listnode LISTNODE;
        ^^^^^^^^^^^^^^^

第二个typedef声明了指向结构类型对象的指针的别名。

typedef LISTNODE * listnodeptr;
        ^^^^^^^^^^

是否只使用一个类型的几个typedef是风格问题。

所有这三个声明可以合并为一个声明

typedef struct listnode{
char data;
struct listnode *nextptr;
} LISTNODE, *listnodeptr;