设为首页收藏本站
查看: 307|回复: 3

C语言简明知识系列十:共用体

[复制链接]
  • TA的每日心情
    开心
    2020-7-2 16:41
  • 签到天数: 45 天

    [LV.5]常住居民I

    发表于 2020-6-4 20:43:23 | 显示全部楼层 |阅读模式
    在C语言中,共用体是一种特殊的类型。一个共用体可以包含多种不同类型的变量,在共用体变量生命周期内,仅有一个变量会生效。共用体在某些书籍中也叫做共同体,所以后面再遇到的时候请不要奇怪和差异。实际上,在具体的生产编码的时候此数据结构很少用到
    1、共用体的定义
    1. union [union name]
    2. {
    3.    member;
    4.    member;
    5.    ...
    6.    member;
    7. } [union variables];
    复制代码

    如上:union是定义共同体的关键字,后面是共同体的名字用{}包起来就是共同体成员变量,随后是共同体变量。
    2、共同体大小
    在这里定义如下共同体:
    1. #include <stdio.h>
    2. union MyData {
    3.         int iScore;
    4.         double dMoney;
    5.         char szName[32];
    6. };

    7. int main()
    8. {
    9.         union  MyData unTest;
    10.         printf("共同体的大小是:%d", sizeof(union MyData));
    11.     return 0;
    12. }
    复制代码


    还记得前面说过的么?共同体的内部成员共用一块内存,这里字符串占了32字节,所以这个共同体的大小为32;
    3、访问共同体
    还以上面的共同体为例。下面分别对共同体成员进行赋值:
    1. unTest.dMoney = 99.88;
    2.         unTest.iScore = 100;
    3.         strncpy_s(unTest.szName, "猿猿", 32);
    4.         printf("unTest.dMoney=%lf\n unTest.iScore=%d \n
    5.                unTest.szName=%s", unTest.dMoney,
    6.                unTest.iScore, unTest.szName);
    复制代码


    运行此代码发现:输出dmoney和iScore时出现乱码。但是szname得到了正确的输出。由此可见,共用体存在多个成员时,后赋值的会将前面赋值的进行覆盖。
  • TA的每日心情
    开心
    2020-7-2 16:41
  • 签到天数: 45 天

    [LV.5]常住居民I

     楼主| 发表于 2020-6-4 22:49:29 | 显示全部楼层

    关注下我的公众号呗:codingguy
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    4 天前
  • 签到天数: 10 天

    [LV.3]偶尔看看II

    发表于 2020-7-1 11:20:26 来自手机 | 显示全部楼层
    收藏了 感谢楼主分享
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    站长推荐 上一条 /3 下一条

    红盟社区--中国红客联盟 

    Processed in 0.068400 second(s), 16 queries.

    站点统计| 举报| Archiver| 手机版| 黑屋 |   

    Powered by HUC © 2001-2017 Comsenz Inc.

    手机扫我进入移动触屏客户端

    关注我们可获取更多热点资讯

    Honor accompaniments. theme macfee

    快速回复 返回顶部 返回列表