语法:typedef和struct标记说明

丹尼斯·戈洛夫金(Denis Golovkin)

在以下示例中:

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 ++中的标记与类型名称

dbush

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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章