【发布时间】:2014-04-03 17:14:43
【问题描述】:
struct One{
int x[6];
short y[12];
} a;
union Two{
int x[6];
short y[12];
} b;
假设 int 是 32 位,而 short 是 16 位。
一个。 sizeof(a) 和 sizeof(b) 是什么?
b.如果&a = 0x00320000,那么&a.y是什么?
c。如果&b = 0x00320400,那么&b.y是什么?
谁能解释一下如何导出联合和结构的大小,以及如何获取地址的值。我理解 &a 和 &b 分别表示 a 和 b 的地址。但是,我不确定如何得出 &a.y 和 &b.y 将返回的结果。
【问题讨论】:
-
为什么不自己编译检查一下。
-
结构和联合的根本区别是什么?这将在很大程度上控制答案——这也是家庭作业的目的。简而言之,联合的大小是其最大元素的大小。结构的大小是其元素大小的总和,加上需要的填充。
-
即使给定每种类型的位数,这仍然取决于编译器和系统。
-
您想要语言律师的答案还是仅针对特定实施的答案?
-
@Shan:该死的,不要强化这种坏主意。它们只适用于一种特定的实现,并且可能只适用于源/编译器/OS/whathaveyou 中的下一个最轻微的错误修复。
标签: c