结构体嵌套对齐以及结构体中含有数组的对齐,也基本总结了各类结构体对齐的问题

您所在的位置:网站首页 struct数组的字节大小 结构体嵌套对齐以及结构体中含有数组的对齐,也基本总结了各类结构体对齐的问题

结构体嵌套对齐以及结构体中含有数组的对齐,也基本总结了各类结构体对齐的问题

2023-10-24 18:13| 来源: 网络整理| 查看: 265

目录 ①结构体嵌套对齐以及结构体中含有数组的对齐②其余的对齐规则 基本的结构体对齐知识点击这里

①结构体嵌套对齐以及结构体中含有数组的对齐

32位系统环境 规则一:结构体中含有数组,数组元素类型和结构中其余的最大类型取较大者 对齐 规则二:结构体S2中嵌套结构体S1,则按照S1的最大元素类型和S2中各元素类型取较大者对齐 就是max(sizeof(struct S1),sizeof(max_type_of_S2))

注释的数字表示偏移量(就是地址)

#include #include struct S1 { char a;// 0 double b;// 8-15 short c[2];//16-19,因为double的8比short的2大,引用规则一 //共24 }; struct S2 { struct S1 a;// , 0-23 int b;//24-27 char c;//28 // 最后按S1的最大类型double的8字节对齐,因为double比S2的int和char字节数都大,最后 //整个S2按照8字节对齐 }; int main() { using namespace std; cout struct S1 a;// 0-11,按4字节对齐 int b;//12-15,S2中S1类型按4字节对齐,int和char中比较大的是int,两个都一样是4字节,所以整个结构按4字节对齐 char c;//16 //原来占17字节,但是得按照4字节对齐,所以是20 }; int main() { using namespace std; cout


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3