当结构体嵌套结构体时候,只需要看结构体中最大数据类型就可以了
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<string.h> #include<stdlib.h> #pragma pack(show)//可以查看对齐模数 //#pragma pack(1)//默认对齐模数为8 对齐模数可以改为 2的次方 //对于自定义数据类型 内存对齐规则如下 //1.从第一个属性开始 偏移为0 //2.第二个属性开始,地址要放在 该类型整数陪 与 对齐模数比 取小的值 的整数陪上 //3.所有的属性都计算结束后,整体再做二次对齐,整体需要放在属性中做大类型 与 对齐模数比 取小的值的整数倍上 typedef struct _STUDENT { int a;//0~3 char b;//4~7 double c;//8~15 float d;//16~19 }Student; void test01() { printf("size of=%d\n",sizeof(Student)); } //当结构体嵌套结构体时候,只需要看结构体中最大数据类型就可以了 typedef struct _STUDENT2 { char a;//0~7 Student b; //8~31 double c; //32~39 }Student2; void test02() { printf("size of=%d\n", sizeof(Student2)); } int main() { //test01(); test02(); return EXIT_SUCCESS; }