Structures with typedef
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
Purpose of struct, typedef struct, in C++
typedef struct vs struct definitions
我知道在C中声明结构有两种方法
1 2 3 | struct point{ int x, y; }; |
还有:
1 2 3 | typedef struct{ int x, y; } point; |
但是这两种方法有什么区别?我什么时候使用typedef方法而不是其他方法?
差异:
只有一种方法可以在C中声明一个
1 2 3 | struct point_st { int x, y; }; |
这里,
您可以(独立地)使用typedef定义类型名,例如
1 | typedef struct point_st Point; |
(您可以在任何C类型上使用
例如,gtk和glib有许多不透明的类型,这些类型是不透明的结构;只有实现知道并关心结构成员。
当然,编译器需要知道一个结构的字段来分配它;但是如果您只使用指向不透明结构的指针,则不需要声明该结构(即,它的字段在大括号中)。
对于第一个窗体,变量声明必须是:
1 | struct point A; |
第二种形式允许声明不带
1 | point B; |