例如:
struct
{
int a;
union
{
struct
{
int x;
int y;
}log;
};
}send;
这里面,在结构的内部定义了一个union,union里面又定义了一个struct。
问一下,这样可以用send.log.x来访问变量x吗?
就是说,send.log.x的中间,少写了union这一级,而这一级实际上没有定义名字。
这样访问是正确的吗?
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 这个变量外,别无作用了,不能再拿来定义别的变量了。
{
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 这个变量外,别无作用了,不能再拿来定义别的变量了。