b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

使用sizeof(S1)获得的结构的大小是多少?

电脑杂谈  发布时间:2020-03-30 12:08:14  来源:网络整理

sizeof计算结构体大小_sizeof计算结构体大小_卵细胞的结构大小形状还有其他

全部展开

这是内存对齐的问题. 每个变量都有两个对齐参数: 默认对齐参数和系统定义的对齐参数. 实际的对齐参数是两者中较小的一个. 例如,在上面的结构中,c的默认对齐参数为2(short类型占用的内存量),而系统定义的对齐参数为4,因此变量c的实际对齐参数为2

卵细胞的结构大小形状还有其他_sizeof计算结构体大小_sizeof计算结构体大小

以下规则适用于结构内存对齐:

1. 该结构的第一个成员变量的起始地址与该结构的地址一致;

sizeof计算结构体大小_卵细胞的结构大小形状还有其他_sizeof计算结构体大小

2. 结构成员变量的起始地址相对于结构地址的偏移量必须是成员变量的对齐参数的整数倍;

3. 结构的对齐参数是其内部成员变量对齐参数中最大的;

sizeof计算结构体大小_sizeof计算结构体大小_卵细胞的结构大小形状还有其他

4. 结构的大小必须是结构的对齐参数的整数倍;

根据上述规则,假设结构地址为0x1000,分析您给出的结构

sizeof计算结构体大小_sizeof计算结构体大小_卵细胞的结构大小形状还有其他

成员变量a的对齐参数为MIN(sizeof(int),4)= 4,起始地址为0x1000,与结构地址相同;

成员变量b的对齐参数为MIN(sizeof(int),4)= 4sizeof计算结构体大小,起始地址为0x1004,与结构地址的偏移量为0x1004-0x1000 = 0x04,它是4的倍数<

成员变量c的对齐参数为MIN(sizeof(short),4)= 2,起始地址为0x1008,与结构地址的偏移量为0x08,是2的倍数.

成员变量d的对齐参数为MIN(sizeof(char),4)= 1,起始地址为0x100A,与结构地址的偏移量为0x0A,是1的倍数.

结构本身的对齐参数为MAX(a,b,csizeof计算结构体大小,d)= 4,因此结构的大小必须为4的倍数,并且结构本身的4个成员变量占据4 + 4 + 2 + 1 = 11,为了满足4的倍数,成员变量d之后将有一个字节填充字节.

总而言之,答案是12.


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-157717-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      每日福利
      热点图片
      拼命载入中...