可恶的匿名结构体类型

本文探讨了匿名结构体在编程中的使用,它省略了结构体名称,使得代码更紧凑,但也可能造成可读性问题。匿名结构体只能在定义时指定变量,后续无法直接引用类型。尽管成员相同,但编译器会视作不同类型,导致指针不能直接赋值。了解匿名结构体的特点有助于理解其适用场景。
摘要由CSDN通过智能技术生成

我最讨厌挤成一坨的代码。简直就是反人类。但是有些人就是觉得这样的代码简洁。

匿名结构体类型就是一种挤在一起的代码。

匿名结构体类型

正常结构体类型

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的地址。

特点

匿名结构的特点是只能用一次,以后在不能用了。只能在创建的时候定义结构体变量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值