当前位置: 首页 > news >正文

办个人网站租空间重庆市建设工程信息网综合网

办个人网站租空间,重庆市建设工程信息网综合网,黑龙江省中国建设银行网站首页,百度站长工具怎么关闭目录 一、什么是联合体 二、联合类型的声明 三、联合变量的创建 四、联合的特点 五、联合体大小的计算 六、联合的应用#xff08;判断大小端#xff09; 七、联合体的优缺点 7.1 优点 7.2 缺点 一、什么是联合体 联合也是一种特殊的自定义类型。由多个不同类型的数…目录 一、什么是联合体 二、联合类型的声明 三、联合变量的创建 四、联合的特点 五、联合体大小的计算 六、联合的应用判断大小端 七、联合体的优缺点 7.1 优点 7.2 缺点 一、什么是联合体 联合也是一种特殊的自定义类型。由多个不同类型的数据成员组成的复合数据类型。 这种类型定义的变量也包含一系列的成员特征是这些成员共用同一块空间所以联合也叫共用体。 二、联合类型的声明 定义一个联合类型的形式如下 union 联合名 { 成员列表 }; 成员列表中含有若干成员成员的一般形式为 类型说明符 成员名 成员名的命名应符合标识符的规定。 三、联合变量的创建 #include stdio.h//联合类型的声明 union Un {char c;int i; }un2; //声明的同时并创建un2union Un un3;//先声明再创建un3 (全局变量)int main() {//联合变量的定义union Un un1 { 0 };//先声明再创建un1并初始化 (局部变量)return 0; } 四、联合的特点 我们运行下面一段代码 #include stdio.hunion Un {char c;int i; }; int main() {union Un un { 0 };printf(%d\n, sizeof(un));//计算联合体的大小return 0; } 运行结果如下 为什么运行结果为4呢 那我们就要引入联合体的特点了。 联合的成员是共用同一块内存空间的这样一个联合变量的大小至少是最大成员的大小因为联合至少得有能力保存最大的那个成员。         由于联合体的所有成员共用同一空间改变其中一个成员的值可能会影响到其他成员的值因此联合体中的成员不能同时存在只适合在某一时间只使用其中单个成员时使用。 就像共享自行车共享状态但只能一个人骑你骑我不骑我骑你不骑。 例如 #include stdio.hunion Un {char c;int i; };int main() {union Un un { 0 };un.i 0x11223344;un.c 0x00;printf(%x\n, un.i);return 0; } 调试结果如下 我们发现运行到c的时候a跟着改变了将a的第4个字节的内容修改为00了。 先改变的是低地址处的数据这里是小端存放。 由此可以发现联合体的成员是共用一块内存空间的。 五、联合体大小的计算 联合的大小至少是最大成员的大小。联合体在计算大小的时候也存在内存对齐。当最大成员大小不是最大对齐数的整数倍的时候就要对齐到最大对齐数的整数倍。 例 #include stdio.hunion Un1 {char c[5]; //1 8 1//看类型相当于5个char放在这里所以自身对齐数为1默认对齐数为8int i; //4 8 4};int main() {printf(%d\n, sizeof(union Un1));//输出8return 0; } 分析 1、创建一个char类型数组大小为5个字节这里相当于5个char自身对齐数为1默认对齐数为8所以对齐数为1。         2、int类型的i自身大小为4个字节默认对齐数为8自身对齐数为4所以对齐数为4。 i和c中最大的对齐数为4而最大成员大小是数组c5个字节5不是4的倍数对齐规则要求对齐到最大对齐数4的整数倍所以输出8。         3、虽然共开辟了8个字节但是只用了5个字节剩余3个字节没有用。 注意 下图中这两种写法并不等价这样写是为了方便理解对齐数那里。 第一个arr占用5个字节共用5个字节第二个占用1个字节大小(共用1个字节) 例子 union Un1 {char c[5];int i; };union Un2 {char c1; char c2;char c3;char c4;char c5;int i; };int main() {printf(%d\n, sizeof(union Un1));//输出8printf(%d\n, sizeof(union Un2));//输出4return 0; } 六、联合的应用判断大小端 可以通过联合体可以在不使用额外内存的情况下判断计算机是大端存储还是小端存储。 代码如下 #include stdio.hint check_sys() {union{int i;char c;}un;un.i 1;return un.c; //返回1是小端返回0是大端 }int main() {int ret check_sys();if (ret 1){printf(小端\n);}else {printf(大端\n);} } 分析如下 七、联合体的优缺点 7.1 优点 1、节省空间 联合体可以最大程度地节省内存特别是当有多个变量是同一类型的时候。 2、数据类型之间的转换 联合体可以用于在不同的数据类型之间转换。 联合体的数据之间的转换是指将联合体的一个成员转换为另一个成员的过程。 数据之间的转换可以通过强制类型转换或直接访问成员来实现。 7.2 缺点 1、不安全 联合体不提供任何形式的数据隔离这意味着一个变量可以覆盖另一个变量的数据。所以在访问联合体成员时需要保证访问的成员与最后一次赋值的成员类型相同否则可能会出现数据错误或不可预期的结果。 2、可移植性问题 不是所有的系统对联合体中的对齐做出相同的保证这可能导致在一个系统上运行正常的代码在另一个系统上出现问题。
http://www.hkea.cn/news/14390381/

相关文章:

  • 网站建设教程视频网络推广竞价
  • 找人做logo网站网站备案情况查询
  • 群晖可不可以做网站用wordpress 培训小程序
  • 个人域名可以做企业网站吗石景山郑州阳网站建设
  • 网站建设费算不算固定资产安徽建设干部学校网站
  • 企业网站案例公司游戏下载网站 wordpress
  • 个人网站 备案东营考试信息网官网
  • 沽源网站建设佛山网站制作哪个好薇
  • 珠海企业网站建设价格企业名录免费查询器下载
  • 网站开发 python北京建站模板公司
  • 网站店铺分布图怎么做阿里云备案 网站备案域名
  • 做网站网站建设专业公司哪家好域名查询
  • 海口网站建设设计wordpress主题安装500
  • 有没一些网站只做临床药学公司优化是什么意思
  • 遵义网站建设1w1hdedecms网站后台很卡
  • 网站开发就业趋势手机网站怎么上传图片
  • 电子商务网站建设开发wordpress如何配置伪静态页面
  • 自贡网站建设哪家好品牌推广互联网广告
  • 江苏茂盛建设有限公司网站网站建设公司广州
  • 我想找阿里巴巴做网站推广建筑模型网站
  • 滕州网站制作网站推广有哪些常用的方法
  • 网站所有页面只显示域名运城网站建设多少钱
  • 做个人的网站怎么做用vs做的网站怎么打开吗
  • 网站备案需要的资料运涛网站建设
  • 重庆快速网站建设平台广东省住房城乡建设厅门户网站
  • 绵阳的网站制作公司哪家好建设咖啡厅网站的意义
  • 老网站改版启用二级域名outlook企业邮箱
  • 浦北网站建设网站域名一年大概多少
  • seo 网站文案模板谷歌做自己的网站
  • 做淘客的网站都有哪几个泉州排名推广