在以下示例中:
typedef struct Books {
char title[50];
char author[50];
int book_id;
} Book;
然后Book
可以使用来声明变量,例如:
Book myBook;
但是什么意思Books
呢?如何使用它,或者为什么我们需要它?我主要对纯C感兴趣,但是如果您也能对C ++进行解释,那将很棒。
-编辑-
更具体地说,上面的代码和下面的代码之间的区别是什么:
typedef struct {
char title[50];
char author[50];
int book_id;
} Book;
为什么在第一个示例中我们需要额外的文字?
在这里找到了很好的解释:C和C ++中的标记与类型名称
的typedef
说法Book
是的别名struct Books
。无论您在哪里使用,都可以使用另一种。
唯一的例外是ifstruct Books
包含指向另一个的指针struct Books
。在这种情况下,您不能使用别名。
编辑:
如果使用前向声明,则可以执行上述操作:
typedef struct Books Book;
struct Books {
Book *moreBooks;
}
至于Books
,那本身不是有效的类型。您需要在其前面加上struct
关键字。这与C ++不同,在C ++中,struct
(或class
)关键字在引用时是可选的。
编辑2:
在您提供的第二个代码示例中,Book
是匿名结构的别名。在这种情况下,必须使用别名来引用它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句