MST
星途 面试题库

面试题:C语言结构体对齐:简单结构体大小计算

在C语言中,有如下结构体定义: ```c struct { char a; int b; short c; } myStruct; ``` 假设在32位系统下,每个数据类型的基本对齐要求为:`char`为1字节对齐,`short`为2字节对齐,`int`为4字节对齐。请计算`myStruct`结构体的大小,并说明计算过程。
29.1万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试
  1. 计算过程

    • 首先是char a,它占1字节。由于char是1字节对齐,所以a的偏移量为0,占用1字节空间。
    • 接着是int bint是4字节对齐。此时偏移量为1,不是4的倍数,需要填充3字节,使偏移量达到4(满足4字节对齐),int b占用4字节,此时偏移量变为4 + 4 = 8。
    • 然后是short cshort是2字节对齐。此时偏移量8是2的倍数,所以short c直接占用2字节,偏移量变为8 + 2 = 10。
    • 结构体总大小需要满足其最大对齐数(这里最大对齐数是int的4字节对齐),10不是4的倍数,需要填充2字节,所以结构体myStruct的大小为10 + 2 = 12字节。
  2. 结论myStruct结构体的大小为12字节。