不确定该代码的“ Books”部分是什么-如果要声明为“ Book”,则该类型为“ Book”,它位于大括号后。
typedef struct Books { char title[50]; char author[50]; char subject[100]; int book_id; } Book;
答案 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
,则表示带有该标记的结构,联合或枚举类型。