我在代码中看到了类似的东西:
struct listnode{
char data;
struct listnode *nextptr;}
typedef struct listnode LISTNODE;
typedef LISTNODE *listnodeptr;
那为什么他会使用typedef 2次???
答案 0 :(得分:0)
这里有两个typedef
不重复,它们只有两个不同的类型。
typedef struct listnode LISTNODE;
创建的类型LISTNODE
是struct listnode
的别名typedef LISTNODE *listnodeptr;
创建的类型listnodeptr
是LISTNODE *
的别名,即struct listnode *
答案 1 :(得分:0)
第一个typedef声明了结构本身的别名
typedef struct listnode LISTNODE;
^^^^^^^^^^^^^^^
第二个typedef声明了指向结构类型对象的指针的别名。
typedef LISTNODE * listnodeptr;
^^^^^^^^^^
是否只使用一个类型的几个typedef是风格问题。
所有这三个声明可以合并为一个声明
typedef struct listnode{
char data;
struct listnode *nextptr;
} LISTNODE, *listnodeptr;