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 展开
{char st[4];
int i ;};
struct A
{ int c;
union U u ;
}a;
求变量a所占内存字节数 麻烦讲解详细 谢谢 运行环境为turbo C 展开
5个回答
展开全部
共用体:
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个字节。
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个字节。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
union的内存大小由其占有内存最大的成员决定,所以union U{char st[4];int i ;};的字节数是4个字节。结构体所占内存由所以成员的字节数相加,所以a的大小为1+4=5.给分吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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
{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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
直接
sizeof a
自己看就好了……
sizeof a
自己看就好了……
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询