我最近在C开始,想知道
之间的区别typedef struct
{
char *name;
int age;
} Person;
和
struct Person
{
char *name;
int age;
}
typedef struct Person Person;
谢谢
答案 0 :(得分:3)
这样没有区别。 typedef
只创建当前数据类型的别名。
但是,在第一种情况下,您可以将struct
变量声明为Person me;
,即仅使用Person
。在第二种情况下,您可以使用Person me;
或struct Person me;
两者都有效。
我发现后者更具可读性和可理解性。
额外备注:
顺便说一句,你的第二个声明有一个小的句法错误:
struct Person
{
char *name;
int age;
}; // You missed this ';'
typedef struct Person Person;
您还可以将这两个语句合并为:
typedef struct Person
{
char *name;
int age;
}
Person;
答案 1 :(得分:2)
在第二个示例中,struct
也被赋予名称(称为"结构标记")Person
,但在省略的第一个版本中,Person
1}}结构的唯一名称。
我尽可能选择前者,不需要引入额外的名字。