本次讨论聚焦在C语言中结构体复合数据类型的高级应用,即结构体的嵌套与使用。首先,通过实例揭示了如何在一个结构体中嵌套另一个结构体,示例中展示了如何定义与初始化包含父母信息的学生结构体。在此基础上,进一步阐释了在C语言中结构体的内存对齐规则:在不同操作系统上,结构体的成员可能因内存对齐需要在内存中占据额...
当结构体嵌套了结构体时,以数据成员的结构体的自身长度作为外部结构体的最大成员的内存大小,比如结构体a嵌套结构体b,b中有char、int、double等,则b的自身长度为8开始计算b结构体内子成员位置 最后结构体的内存大小必须是结构体中最大成员内存大小的整数倍,不足的需要补齐 解释下上面的24 16 是如何得到的: Person...
根据对齐原则:结构体总大小是最大成员变量大小的倍数。所以该结构体中最大成员变量为4,总大小为4的倍数,顾:根据对齐原则:该结构体大小为16 结构体对齐总结结构体总大小是最大成员变量大小的倍数。结构体嵌套结构体对齐总结结构体作为结构体成员,其对齐值取其自身成员中最长数据类型的成员的长度的倍数。总结内存对齐...
1,如果class或struct里面有基本类型数组,则数组应该按照结构体对齐值的倍数对齐。 而结构体对齐值应该是基本变量的最大值,这里是int, 即4.///4+4structSZ{charc[2];inta;};///2+2+4=8structSZ2{charc[2];shortb;inta;};///4+4+4=12structSZ3{charc[2];inta;shortb;};///4+4+4=12struct...
嵌套结构体内存对齐 structMyStruct1{structMyStruct2struct1;//从结构体内存可知MyStruct2为16字节 (0,15)charb;// char 1字节 (16)intc;// int占4字节 17,18,19 (20,21,22,23)shortd;// short占2字节 (24,25)doublee;//double占8字节 26,27,28,29,30,31,(32,33,34,35,36,37,38,39)}...