C - 为结构定义 typedef 2 次



我在代码中看到这样的事情:

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

那么他为什么要使用 Typedef 2 次呢???

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

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

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

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

是否使用一个的多个类型定义是风格问题。

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

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

这里的两个typedef不是重复的,它们为两种不同的类型提供了别名。

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

最新更新