struct过于灵活,导致一些细节问题。
下面对有关struct的定义的细节展开讨论。
注意:c/c++环境下,union和struct的定义和使用基本是一样的。
定义方式1
struct {
...}abc;
特点:
只定义了一个abc变量,而没有定义结构体类型。
定义方式2
struct ABC{
...};
特点:
只定义了一个结构体类型ABC。可用ABC cde来定义另外一个结构体ABC变量。
使用时,在c语言中必须加struct前缀,在c++中不需要。
定义方式3
struct ABC{
...}abc;
特点:
既定义了一个abc变量,又定义了一个结构体类型ABC。可用ABC cde来定义另外一个结构体ABC变量。
使用时,在c语言中必须加struct前缀,在c++中不需要。
定义方式4
typedef struct ABC{
...};
特点:
只定义了一个结构体类型ABC。可用ABC cde来定义另外一个结构体ABC变量。
使用时,在c语言中不需加struct前缀,在c++中也不需要。
匿名结构体。
定义方式5
typedef struct ABC{
...}abc;
特点:
既定义了一个abc变量,又定义了一个结构体类型ABC。可用ABC cde来定义另外一个结构体ABC变量。
使用时,在c语言中不需加struct前缀,在c++中也不需要。
匿名结构体。
定义方式5
typedef struct {
...}ABC;
特点:
只定义了一个结构体类型ABC。可用ABC cde来定义另外一个结构体ABC变量。
使用时,在c语言中不需加struct前缀,在c++中也不需要。
匿名结构体。