结构体变量空间分配
-
分配的空间 按照成员变量的顺序进行空间分配
-
空间分配的总和是所有成员变量的和
-
为了更方便取数据,会在成员变量的空间进行一些填充,表示实际上分配的字节数 >= 所有成员变量分配的空间。
struct Worker
{
char name[20]; //20,但是考虑最大类型double字节对齐 8,下一个的类型是
//double类型,所以是 24
double salary; //8
int age; //4
char sex; //占1个字节,
//但是考虑字节对齐,int类型占4个,char类型占1个,字节对齐后整个结构体
//所占字节数就为:24+8+8=40 最后一个8是4+1+3,字节对齐
};
共用体、联合体union空间分配
只对变量名进行空间分配。
只分配所有成员变量之间,所占字节数 最大
d所占的空间8个字节
union Data
{
int a;
char c;
};
union Data d;//d分配的空间4个字节
联合体union作用
判断电脑存储整数大端模式还是小端模式
大端:高字节存低位 低字节存高位
小端:高 字节 存 高位 低字节存低位
union Data
{
int a;
char c;//读取4位整数
};
int main()
{
union Data d;
d.a = 1;//小端模式,低地址中存的字节是 1
//大端模式,低地址中存的字节是 0
if(d.c == 1)
{
printf("小端模式\n");
}
}