永发信息网

在C语言中下面变量占用的内存字节是多少?

答案:3  悬赏:40  手机版
解决时间 2021-01-15 19:14
在C语言中下面变量占用的内存字节是多少?
最佳答案
union are
注意点:
元素a数组长度9Byte,b长度2Byte,c长度8Byte
union中,最大长度的是c元素,所以内存起始和结束都对齐到8的倍数,补齐到了2*8=16Byte
参照图片中灰色区域的16Byte


struct arew

struct arew
{
    char a[9];      // 10Byte (内存占位补齐到偶数地址)
    short int b;    // 2Byte
    long int c;     // 4Byte
    char e;         // 8Byte  (联合体之前最后一个结构体元素补齐到8倍数地址,为了之后的联合体从8的倍数地址起始)
    union are d;    // 16Byte (同上)
};
追问你说a数组的长度是9,为啥最后又说最长的是8,补齐是16呢?我想,是不是这样的,因为变量数据类型最长的是double,所以看数据类型最长的是8,然后第一个类型数据占了9,第二个占了2,9+2等于11,然后必须是最后那个8的最小倍数,再加5,就是16?
结构体里的依次是10,2,4,8,16,第一个为什么是10?为什么和数组里的长度不同?还有就是10+2+4+8=24,24不是16的倍数,为什么不补
全部回答
int,float是4,char是1,*p是4
关键字union声明的变量叫“共用体”,占用字节多少由其中成员变量最大占用字节数确定,确定规则是按最大基本成员变量据点字节数的整数倍“对齐”。在are中占用字节数最多的是a,9个字节;最大基本变量c所占字节数是8,所以“对齐”的结果是取比9大的8的最小整数倍16——你可以验证一下,把char a[9];改成char a[8];,虽然只减少了一个字节,但总占有字节数立马就应该变成8了。由struct声明的变量叫结构体,总占有字节数是其所有成员变量据点字节数的总和,也要“对齐”。其中占用字节最多的成员变量是c,4字节,所以a要点12字节(空了3字节),b要占4字节(空了2字节),c占4字节,e占4字节(空了3字节),are16字节,所以总共是40字节。对于struct还有个情况,那就是当把成员变量的前后次序换一换时,有可能使总的占用字节数发生变量,这是因为对齐时是从前至后依次计算的……
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
侨润物流有限公司(台前分公司)地址在哪,我要
拉肚子可以吃柚子吗
赐你一醉烙锅城地址有知道的么?有点事想过去
L是什么意思
梁凯恩的老婆是谁
IE中 iframe包含页面中的<a>标签不响应
夜景的心情短语
图《圆的自白》告诉我们 (  )①事物
我想先在木器上上一层完全遮蔽木纹的油漆,然
高斯函数,取整函数.值为-1.5 是取-2还是-1。
榻榻米使用什么材质?
五行里什么代表脊柱和骨头啊
院子里养了两个鸡,鸡屎怎么清理
于朦胧是否已结婚?
5.8+4.2*1.6怎样简便运算
推荐资讯
西昌到美姑在哪里乘车
我想用朋友的相片和我的相片和在一起来怎么弄
深圳车牌指标什么的。
卫生间里装个浴室算大屋套小屋吗?
鸟类里最爱"说话"的是什么鸟
上联东村西南北,求下联
星月理发店地址好找么,我有些事要过去,
床板被虫咬对人体睡觉有没有影响
三个8分之1+2个8分之1的五个8分之1对吗
站着背疼坐着不疼怎么回事
天瑞仪器的知名度和实力怎么样?
6乘以24的瓷砖一平方要用多少片?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?