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

C语言----共用体

共用体:
union //联合--共用体 

早期的时候,计算机的硬件资源有限,
能不能让多个成员变量 公用同一块空间 


使用方式 类似 结构体  --- 也是构造类型 

struct 结构体名
{
  成员变量名
};


union 共用体名
{
  成员变量名
}; //表示构造了一个共用体类型 

//定义变量
//定义指针 
//定义数组 
//做函数形参 
//做函数返回值类型

注意:
  1.共用体类型的大小 = 最大的成员的大小
  2.共用体初始化,只能写一个值,这个值是给第一个成员变量的值 
  3.共用体成员的访问方式 和 结构体一样
  4.共用体因为公用同一块空间
    赋值时,后赋值的会影响前面赋值的结果

  5.用途 
    a.节省空间 
    
    校园人员管理系统 
    struct student 
    {
       char name[20];
       int sno;
       float score;
    };
    
    struct teacher 
    {
       char name[20];
       int  tno;
       float salary;
    };
    
    
    struct member
    {
       char name[20];
       int  no;
       union 
       { 
          float salary;
          float score;
       }data;
    };
    
    struct member s;
    printf("score = %f\n",s.data.score);
    struct member t;
    printf("score = %f\n",s.data.salary);

b.数据转换 
    192.168.0.59 //ip地址 --- 网络环境中 ---实际对应是一个32位的数值 
    
    #include <stdio.h>
    union Ip
    {
        unsigned char ip[4];
        unsigned int iip;
    };

    int main(int argc, const char *argv[])
    {
        union Ip d = {192,168,0,59};
        
        printf("ip = %#x\n",d.iip);
        
        return 0;
    }
 

 

 

相关文章:

  • 1、云原生写在前面
  • 高并发系统-性能指标的判断
  • prompt技术结合大模型 生成测试用例
  • transformer(4):FFN 编码器块
  • Hutool - Cron:强大的定时任务模块
  • 装饰器模式
  • 双指针-三数之和
  • 【YOLOv11改进- 主干网络】YOLOv11+CSWinTransformer: 交叉窗口注意力Transformer助力YOLOv11有效涨点;
  • MongoDB:记一次数据迁移经验
  • JavaSE的基础语法(5)
  • PostgreSQL如何关闭自动commit
  • 基于Python的Flask微博话题舆情分析可视化系统
  • SaaS 平台开发要点
  • javascript-es6 (四)
  • 【NLP251】命名实体实战(基于Transformer分类)
  • 【BUUCTF逆向题】[ACTF新生赛2020]Splendid_MineCraft(SMC代码混淆)
  • 【强化学习】强化学习(Reinforcement Learning, RL)详解
  • SpringBoot+uniApp日历备忘录小程序系统 附带详细运行指导视频
  • 459重复的子字符串(substr)
  • Word中的文档信息域
  • 魔都眼|石库门里看车展,五一来张园体验城市“漫时光”
  • 西湖大学2025年上海市综合评价招生简章发布
  • 4月一二线城市新房价格环比上涨,沪杭涨幅居百城前列
  • 澎湃读报丨解放日报8个版聚焦:牢记嘱托,砥砺奋进
  • 夜读丨春天要去动物园
  • 国台办:民进党当局所谓“对等尊严”,就是企图改变两岸同属一中