当我指的是标识符时,我的意思是在结构的半列之后附加一个名称 - 如下所示:
item struct [<tag_identifier>] {
<type_specifier> <identifier>;
<type_specifier> <identifier>;
} [<identifier>[, <identifier>
看看这个结构并注意&#39; List&#39;附在底部。
typedef struct list{
int value;
struct list *next;
} List;
VS
typedef struct list{
int value;
struct list *next;
};
添加名为List的变量的目的是什么?
答案 0 :(得分:3)
typedef struct list{
int value;
struct list *next;
} List;
声明struct list
类型并声明List
作为类型struct list
的类型别名。
typedef struct list{
int value;
struct list *next;
};
声明struct list
类型,但不声明任何类型别名。这是有效的,但使用typedef
毫无意义。
答案 1 :(得分:0)
它结合了两个声明:
typedef struct list {
int value;
struct list *next;
} List;
与
相同struct list {
int value;
struct list *next;
};
typedef struct list List;
第一个声明一个新的结构类型,第二个声明一个别名。