以下声明之间我有些困惑-您能帮忙清理一下吗?
typedef struct {
int a;
int b;
} example;
还有这个
struct something {
int a;
int b;
} ob;
我不确定下面的意思是什么?
typedef struct foo {
int a;
int b;
} bar;
答案 0 :(得分:5)
typedef struct {
int a;
int b;
} example;
这个定义了一个未命名的结构类型,并引入了example
作为该结构类型的类型别名。因此,您只能将该结构类型称为“示例”。
struct something {
int a;
int b;
} ob;
该对象定义了一种结构类型something
,还声明了该类型的对象ob
。您只能将结构类型称为struct something
。
typedef struct foo {
int a;
int b;
} bar;
这个定义了一个名为foo
的结构类型,并介绍了bar
作为该结构类型的类型别名。您可以将该结构类型称为struct foo
或bar
。
答案 1 :(得分:4)
使用
typedef struct {
int a;
int b;
} example;
您定义了一个未命名的结构,但是为该结构定义了类型别名example
。这意味着您只能使用example
“ type”创建结构的实例,例如
example my_example_structure;
使用
struct something {
int a;
int b;
} ob;
您定义一个名为something
的结构,以及一个名为ob
的结构的实例(变量)。您可以使用struct something
创建结构的新变量:
struct something my_second_ob;
变量ob
可以与结构的任何其他实例一样使用:
printf("b = %d\n", ob.b);
最后,与
typedef struct foo {
int a;
int b;
} bar;
您定义了一个名为foo
的结构,因此您可以使用例如struct foo
来定义变量。您还定义了也可以使用的类型别名bar
。例如
struct foo my_first_foo;
bar my_second_foo;
typedef
的常规语法是
typedef <actual type> <alias name>;
在您的示例的最后一种情况下,<actual type>
是
struct foo {
int a;
int b;
}
,而<alias name
是bar
。