我最讨厌挤成一坨的代码。简直就是反人类。但是有些人就是觉得这样的代码简洁。
匿名结构体类型就是一种挤在一起的代码。
匿名结构体类型
正常结构体类型
struct Node
{
int a;
char b;
float c;
};
匿名结构体类型
struct
{
int a;
char b;
float c;
}x;
struct
{
int a;
char b;
float c;
}a[20], *p;
可以看到匿名结构体比正常的少了一个名字Node。
匿名结构体没有具体的名字,只能在创建类型的同时后面跟一个变量列表。根据变量列表创建名字。
匿名结构体指针类型
struct
{
int a;
char c;
}*psa;
psa 是结构体指针,整个代码被称为匿名结构体指针类型
这里psa和sa能像下面一样赋值吗?
struct
{
int a;
char c;
}sa;
struct
{
int a;
char c;
}*psa;
int main()
{
psa = &sa;//能这样写吗?
return 0;
}
就算两个结构体成员一模一样,但实际编译器会把他们当成不同类型。所以psa不能存放sa的地址。
特点
匿名结构的特点是只能用一次,以后在不能用了。只能在创建的时候定义结构体变量。