在结构的末尾添加“结构标识符”是多余的。它有什么用?

时间:2014-09-11 20:26:50

标签: c

当我指的是标识符时,我的意思是在结构的半列之后附加一个名称 - 如下所示:

  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的变量的目的是什么?

2 个答案:

答案 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;

第一个声明一个新的结构类型,第二个声明一个别名。