#155. 结构体大小
结构体大小
Description
在C语言中的结构体定义时有严格的对齐要求,具体规则为:
- 成员在内存中的排列顺序为定义时给出的顺序
- 成员的首地址必须为元素大小的倍数
- 结构体大小必须为结构体中最大的成员的大小的倍数
- 结构体大小至少为
现在给你一个结构体的简化定义,请你计算出这个结构体的大小。
Input Format
第一行输入一个整数 ,表示结构体中成员的个数。 接下来一行输入 个整数 ,表示结构体中按顺序第 个成员的大小。
Output Format
一行输出一个整数,表示结构体的大小。
4
8 2 4 1
24
Hint
- 对于 的样例,,。
- 默认结构体的首地址为 。
样例解释
样例 #1
首先结构体首地址为
第一个成员的首地址为 ,满足 的倍数
第二个成员的首地址为 ,满足 的倍数
第三个成员的首地址为 ,不满足 的倍数,向上取到最近的 的倍数
第四个成员的首地址为 ,满足是 的倍数
现在结构体大小为 ,根据第三条规则,其中最大成员为 ,向上取到最近的 的倍数为
该结构体的可能的声明为
在内存中的排布为