#include<stdio.h>
//内存对齐:不同平台内存对齐规则不统一
struct A
{
int a;//4
int b;//4
};//8
struct B
{
char a;//1+3 必须是下面数据类型的整数倍 所以+3
int b;//4
};//8
struct C
{
char a;//1+1 必须是下面数据类型的整数倍 所以+1
short b;//2
int c;//4
};//8
struct D
{
char a;//1+3
int b;//4
short c;//2+6 必须是下面是数据类型的整数倍 所以+6
double d;//8
};//24
struct E
{
char a;//1+1 必须是下面是数据类型的整数倍 所以+1
short b;//2
int c;//4
double d;//8
};//16 排兵布阵很重要 上面的结构体D和此结构体E数据类型一样只是顺序不一样
struct F//防止定义数组
{
int a;//4
char b;//1
};//5+3 总字节数必须是单个最大数据类型的整数倍 最大数据类型是整型4字节 所以+3
struct I
{
int a;//4
struct II
{
float b;//4
int c;//4
}d;
int *p;//4
short e;//2
};//18+2 总字节数必须是单个最大数据类型的整数倍 最大数据类型是整型4字节 所以+2
结构体的大小
最新推荐文章于 2023-07-28 09:45:00 发布