Code Bye

结构里的联合,可以省掉联合的名字吗

例如:
struct
{
int a;
union
{
struct
{
int x;
int y;
}log;
};
}send;
这里面,在结构的内部定义了一个union,union里面又定义了一个struct。
问一下,这样可以用send.log.x来访问变量x吗?
就是说,send.log.x的中间,少写了union这一级,而这一级实际上没有定义名字。
这样访问是正确的吗?
解决方案

20

struct
{
int a;
union
{
struct
{
int x;
int y;
}log;
struct
{
int m;
int n;
}chat;
};
}send;
这个定义 log 和 chat 在同一位置
因此 log.x ,chat.m 也就在同一位置了
log.y,chat .n 也就在同一位置了
注意,这两个结构没有名字,但定义了变量,所以 x,m 这两名名字,必须要跟 log,chat 这两个名字联系起来,才可以
不能单独用
union 没有名字
所以 log,chat 这两个名字,可以算作 send 的一个成员。只是他们是 union定义的,所以共用同一块内存
同样, 最外层的stuct 没有名字
因此,这个结构定义是一次性的
除了定义 send 这个变量外,别无作用了,不能再拿来定义别的变量了。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明结构里的联合,可以省掉联合的名字吗