查询C typedef结构

时间:2019-04-06 19:29:03

标签: c

不确定该代码的“ Books”部分是什么-如果要声明为“ Book”,则该类型为“ Book”,它位于大括号后。


    typedef struct Books {
       char title[50];
       char author[50];
       char subject[100];
       int book_id;
    } Book;

3 个答案:

答案 0 :(得分:3)

之后

typedef struct Books {
   char title[50];
   char author[50];
   char subject[100];
   int book_id;
} Book;

您可以使用 Book struct Books

我建议您将 Books 重命名为 Book ,因为's'令人困惑,并说 struct 可管理多本书籍,但这是错误。

struct 内的typedef Book 未知,因此,如果Books引用了其他书籍,则需要使用 struct Books (或 struct Book (如果已重命名)),例如:

typedef struct Book {
   char title[50];
   char author[50];
   char subject[100];
   int book_id;
   struct Book * references; /* struct needed */
} Book;

是正确的,但这是不正确的:

typedef struct Book {
   char title[50];
   char author[50];
   char subject[100];
   int book_id;
   Book * references; <<< error Book is an unknown type
} Book;

答案 1 :(得分:0)

“结构书”是数据类型,由于类型定义,书是该类型的别名。

因此,您可以通过两种不同的方式声明该结构的实例:

struct Books s1;
Book s2;

答案 2 :(得分:0)

在C标准中,这称为标签。当声明中出现以下之一时:

  • struct 标识符
  • union 标识符
  • enum 标识符

然后将identifier声明为该类型的标签。之后,再次出现相同的形式时,如struct Books,则表示带有该标记的结构,联合或枚举类型。