C语言联合体和结构体中变量所占内存

unionU{charst[4];inti;};structA{intc;unionUu;}a;求变量a所占内存字节数麻烦讲解详细谢谢运行环境为turboC... union U
{char st[4];
int i ;};
struct A
{ int c;
union U u ;
}a;
求变量a所占内存字节数 麻烦讲解详细 谢谢 运行环境为turbo C
展开
 我来答
百度网友83cdc1c
2013-07-12 · TA获得超过5792个赞
知道大有可为答主
回答量:1907
采纳率:100%
帮助的人:861万
展开全部
union U两个成员变量,一个字符数组st占4个字节,一个整型i占4个字节,所以两者共用4个字节,union U占4字节。

struct A两个成员变量,一个整型c占4个字节,一个union U类型的u,也占4个字节。所以struct A的大小为两者之和,4+4=8字节。
注,因为这些成员变量都是4字节大小,所以不用考虑字节补齐等因素。
星月小木木
2016-01-13 · TA获得超过3.2万个赞
知道大有可为答主
回答量:2.4万
采纳率:0%
帮助的人:1亿
展开全部
共用体:
sizeof(union data1)的值为16.在编译器默认设置的情况下,该共用体最大基本类型为double,它占8字节,所以此共用体以8来对齐。字符数组c2占9个字节,那么整个共用体应该占9个字节,但按照对齐原则,实际分配给它的内存为16字节。

结构体:
struct data以8个字节对齐,long类型的成员1分配8个字节。s、i、c、a原本分别占4、2、1、10个字节。由于考虑到对齐,s分配4个字节,i分配 2个字节,c分配2个字节,此时刚好用完8个字节。a原本分配10个字节,由于考虑到对齐,要使整个结构体所占的存储空间是8的倍数,所以分配给它16个字节。因此结构体data占8+4+4+2+16=32个字节。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhenimei100
2013-07-12 · TA获得超过921个赞
知道小有建树答主
回答量:586
采纳率:0%
帮助的人:364万
展开全部
union的内存大小由其占有内存最大的成员决定,所以union U{char st[4];int i ;};的字节数是4个字节。结构体所占内存由所以成员的字节数相加,所以a的大小为1+4=5.给分吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
1242385643
2013-07-12 · 超过36用户采纳过TA的回答
知道答主
回答量:80
采纳率:0%
帮助的人:62.4万
展开全部
union U
{char st[4];//4
int i ;};//2
//总共4
struct A
{ int c; //2
union U u ;//4
}a;//总共6

如果有turbo C自己用sizeof看一下也行,如果没有turbo C千万不要用sizeof
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ry_x
2013-07-12 · TA获得超过941个赞
知道小有建树答主
回答量:1095
采纳率:0%
帮助的人:737万
展开全部
直接
sizeof a
自己看就好了……
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式