c语言 union 所占内存大小问题

unionoverlay{charletter;intnumber;};unionoverlayua;ANSIC下这里的ua占多少字节啊??怎么判断啊?帮忙解答一下谢谢我... union overlay {
char letter;
int number;
};
union overlay ua;
ANSI C下 这里的ua 占多少字节啊??
怎么判断啊 ?
帮忙解答一下 谢谢
我想知道怎么出来的
说明一下
展开
 我来答
w3180121
2015-12-02 · 知道合伙人数码行家
w3180121
知道合伙人数码行家
采纳数:793 获赞数:2403
单片机 C语言 电脑 液晶 没有 证书 我们只是一个团队

向TA提问 私信TA
展开全部
联合体(union)
当多个数据需要共享内存或者多个数据每次只取其一时,可以利用联合体(union);
1)联合体是一个结构;

2)它的所有成员相对于基地址的偏移量都为0;

3)此结构空间要大到足够容纳最"宽"的成员;

4)其对齐方式要适合其中所有的成员;

下面举例说明:

如联合体

1 union U
2 {
3 char s[9];
4 int n;
5 double d;
6 };

s占9字节,n占4字节,d占8字节,因此其至少需9字节的空间。然而其实际大小并不是9,

用运算符sizeof测试其大小为16.这是因为这里存在字节对齐的问题,9既不能被4整除,

也不能被8整除。因此补充字节到16,这样就符合所有成员的自身对齐了。

从这里可以看出联合体所占的空间不仅取决于最宽成员,还跟所有成员有关系,

即其大小必须满足两个条件:

1)大小足够容纳最宽的成员;

2)大小能被其包含的所有基本数据类型的大小所整除。
kidwei
2006-06-16 · 超过80用户采纳过TA的回答
知道答主
回答量:219
采纳率:0%
帮助的人:257万
展开全部
在一个union类型结构中,所有的成员公用同样的存储空间,其占用的大小为其成员中需要空间最大者,这里就以int为准:

取决于你采用的系统,如果你的系统int型为2个字节,那就是2个字节。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lishimin1972
2006-06-16 · TA获得超过741个赞
知道小有建树答主
回答量:391
采纳率:0%
帮助的人:456万
展开全部
union overlay {
char letter;
int number;
};
union overlay ua;
1。number占据的空间=sizeof(int)
. 由编译系统系统的整型变量所占据的
. 的内存决定,在TC中为2,在VC6中为4
2。leffter占据的空间原则上=sizeof(char)=1
. 但是为了加快计算机访问内存的速度,
. 常常采用偶地址对齐方式,所以在letter后
. 面的一个字符空闲不用。
3。所以你的程序中
. sizeof(ua)=sizeof(int)+sizeof(1)+1个空闲=4
4。如果:
union overlay {
char letter1;
char letter2;
int number;
};
sizeof(overlay)就是4,那个空闲的部分被用起来了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yuxichu
2006-06-16 · TA获得超过130个赞
知道答主
回答量:132
采纳率:100%
帮助的人:0
展开全部
大小为4,即占用4个字节

union overlay {
char letter;
int number;
};

因为 char类型需要1个字节, int类型需要4个字节. 在一个union类型结构中,所有的成员公用同样的存储空间,其占用的大小为其成员中需要空间最大者,这里就是4个字节.

如果你在上述union中添加一double类型的成员, 其大小将变为8个字节.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
L_o_o_n_i_e
2006-06-16 · TA获得超过4.2万个赞
知道大有可为答主
回答量:8507
采纳率:38%
帮助的人:5276万
展开全部
#include <stdio.h>
#include <stdlib.h>

main()
{
union overlay {
char letter;
int number;
};
union overlay ua;
printf("size ua:%d ",sizeof(ua));
printf("size letter:%d ",sizeof(ua.letter));
printf("size number:%d ",sizeof(ua.number));
exit(0);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式