汽车行业市场分析那个网站做的好,北京公司注册虚拟地址,凡客诚品商品来源,潍坊seo按天收费谢谢观看#xff01;希望以下内容帮助到了你#xff0c;对你起到作用的话#xff0c;可以一键三连加关注#xff01;你们的支持是我更新地动力。 因作者水平有限#xff0c;有错误还请指出#xff0c;多多包涵#xff0c;谢谢#xff01; 联合体 一、联合体类型的声明二…谢谢观看希望以下内容帮助到了你对你起到作用的话可以一键三连加关注你们的支持是我更新地动力。 因作者水平有限有错误还请指出多多包涵谢谢 联合体 一、联合体类型的声明二、联合体的特点三、联合体大小的计算四、联合的一个练习 一、联合体类型的声明 //联合体的关键字union
//结构体的关键字struct
//枚举的关键enumstruct s
{char c;//0//1~3 浪费了int i;//4~7
};union un//联合体的声明
{char c;int i;
};int main()
{printf(%zd\n, sizeof(struct s));//8printf(%zd\n, sizeof(union un));//4return 0;
}二、联合体的特点 联合体的特点联合的成员是共用同一块内存空间的这样一个联合变量的大小至少是最大成员的大小因为联合至少得有能力保存最大的那个成员但不一定等于最大成员的大小。 虽然我们知道了它们是同一个起始地址但是该如何具体的看到内存的变化呢其实我们可以通过调试窗口观察
//代码2
#include stdio.h
//联合类型的声明
union Un
{char c;int i;
};
int main()
{//联合变量的定义union Un un {0};un.i 0x11223344;un.c 0x55;printf(%x\n, un.i);return 0;
}变化之前 变化之后 通过上面的代码比较可以看出联合的成员是共用同一块内存空间的 三、联合体大小的计算 联合体大小计算规则
联合的大小至少是最大成员的大小。当最大成员大小不是最大对齐数的整数倍的时候就要对齐到最大对齐数的整数倍。
union Un
{short arr[7];//14 2 8 2//将数组拆开相当于有7个short的数据int i;//4 4 8 4//所以实际最大对齐数是4那么联合体的整体大小是实际最大对齐数的整数倍//14不是16是那么浪费了2个字节
};int main()
{printf(%d\n, sizeof(union Un));//结果是16return 0;
}四、联合的一个练习 写⼀个程序判断当前机器是大端还是小端
int check_sys()
{union{int i;char c;}un;un.i 1;return un.c;//返回1是⼩端返回0是⼤端
}int main()
{check_sys();return 0;
}