我在代码中看到这样的事情:
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 *