C语言学习—联合体Union和关键字Typedef

  • 前言
  • 1 联合体Union
    • 1.1 Union认知
    • 1.2 Union应用
  • 2 关键字typedef

前言

内容主要为联合体Union和关键字Typedef 的认知学习与简单应用

1 联合体Union

1.1 Union认知

Union常用于同一位置想要描述不同情况下的不同事件,特点是:

  • 联合体的空间大小取决内部最大的元素
  • 联合体内部元素地址相同,因此特点是数据易覆盖
#include <stdio.h>
//联合体学习//结构体
struct Test1
{int idata;char cdata;double ddata;
};
//联合体
union Test2
{int idata;char cdata;double ddata;
};int main()
{struct Test1 T1;union Test2 T2;printf("struct的大小为:%d\n",sizeof(T1));printf("union的大小为:%d",sizeof(T2));//联合体的空间大小取决内部最大的元素printf("idata:%p\n",&T1.idata);printf("cdata:%p\n",&T1.cdata);printf("ddata:%p\n",&T1.ddata);//联合体内部元素地址相同,因此特点是数据易覆盖 printf("idata:%p\n",&T2.idata);printf("cdata:%p\n",&T2.idata);printf("ddata:%p\n",&T2.idata);return 0;
}

1.2 Union应用

由上述特点,Union常与结构体一同使用。在结构体中使用联合体,常用于描述一个事件中的两种或多种子事件

#include <stdio.h>
//联合体学习//联合体应用(结构体中使用联合体,常用于描述一个事件中的两种或多种子事件)
struct Test3
{char name[32];char  statu;union D{int class;char ZiWu[32];}mes;
};int main()
{struct Test3 Data[2];for(int i=0;i<2;i++){printf("请输入身份:s代表学生,t代表老师\n");scanf("%c",&Data[i].statu);if(Data[i].statu=='s'){printf("请输入该学生的班级:\n");scanf("%d",&Data[i].mes.class);printf("请输入该学生的名字:\n");scanf("%s",&Data[i].name);}else{printf("请输入该老师的职务:\n");scanf("%s",&Data[i].mes.ZiWu);printf("请输入该老师的名字:\n");scanf("%s",&Data[i].name);}getchar();//吸收回车}for(int i=0;i<2;i++){if(Data[i].statu=='s'){printf("%号人员身份为学生\n",i+1);printf("该学生的班级:%d\n",Data[i].mes.class);printf("该学生的名字:%s\n",Data[i].name);}else{printf("%号人员身份为老师\n",i+1);printf("该老师的职务:%s\n",Data[i].mes.ZiWu);printf("该老师的名字:%s\n",Data[i].name);}}return 0;
}

2 关键字typedef

关键字typedef常用来指定某个数据类型为新的名字

#include <stdio.h>
//Typedef关键字学习//结构体定义
struct Test
{int data;int data1;
};//关键字定义
typedef struct Test Demo;int main()
{Demo D;//关键字使用D.data=1;D.data1=2;printf("data=%d,data1=%d\n",D.data,D.data1);
}

C语言学习—联合体Union和关键字Typedef相关推荐

  1. mfc实现c语言的注释,C语言学习:标识符、关键字、注释、表达式和语句

    正文共:1526 字 2 图.预计阅读时间: 4 分钟. 文章由源世界原创,转载剽窃必究! 标识符 界说变量时,我们使用了诸如 a.abc.mn123 这样的名字,它们都是程序员自己起的,一般能够表达 ...

  2. C/C++语言中联合体union的妙用

    联合体union的基本概念 在C/C++语言中,有时需要在同一段内存单元中存放不同类型的变量,如把一个整形变量int.一个字符型变量char和一个双精度实型变量double放在同一个地址开始的内存单元 ...

  3. (1)c语言学习总结之从关键字到循环结构

    一.关键字和标示符 1.关键字:c规定的有特殊含义的单词(也就是系统起的名字),全部是小写,有32个; 由关键字引出数据类型和流程类型 1.分类: (1)数据类型:整型用int标示,字符型用char表 ...

  4. C语言 | 联合体(union)、typedef

    一.联合体union 1.联合体含义 联合 union 是一个能在同一个存储空间存储不同类型数据的类型: 联合体所占的内存长度等于其最长成员的长度倍数,也有叫做共用体: 同一内存段可以用来存放几种不同 ...

  5. c语言存储类型关键字作用,c语言学习笔记.关键字.存储类型关键字等

    关键字const 1.修饰变量. 修饰的对象为常量,只读. 2.修饰指针. const 也可以和指针变量一起使用,这样可以限制指针变量本身,也可以限制指针指向的数据. const 离变量名近就是用来修 ...

  6. C语言联合体union详解与实例

    目录 定义 类型定义 变量定义 存储规则 通过联合体获取存储大小端 和结构体类似,联合体(union)是C语言中一种自定义数据类型.联合体中可以定义多个类型的成员变量,但所有成员共享同一块内存区域,所 ...

  7. C语言-联合体union

    目录: 一.union的定义说明使用 1.union的定义 2.union的说明 3.union的使用 二.联合体union的基本特性--和struct的同与不同 三.双刃剑--多种访问内存途径共存 ...

  8. C语言union合并两个字节,C语言中的联合体union所占内存方式

    当多个数据需要共享内存或者多个数据每次只取其一时,可以利用联合体(union).在C Programming Language 一书中对于联合体是这么描述的: 1)联合体是一个结构: 2)它的所有成员 ...

  9. 【C 语言】数据类型本质 ( 数据类型别名 | typedef 关键字 | 为复杂数据类型设置别名 | 为简单数据类型设置别名 )

    文章目录 一.typedef 关键字 1.为复杂数据类型设置别名 2.为简单数据类型设置别名 二.代码示例 一.typedef 关键字 1.为复杂数据类型设置别名 使用 typedef 关键字为 复杂 ...

最新文章

  1. Linux 的内存管理工具和调优参数
  2. 如何使用阿里云服务器
  3. leetcode算法题--数组中数字出现的次数 II
  4. 第十二章 类和动态内存分配
  5. mysql cluster 查看最大索引数_MySQL 数据库优化,看这篇就够了
  6. php获取页面的可视内容高度,网页制作技巧:获取页面可视区域的高度_css
  7. 假期别在家里要发霉了?可以靠他们度过无聊时光
  8. microsoft vbscript编译器错误怎么解决_win7系统ie应用程序错误怎么办 ie应用程序错误解决方法【详解】...
  9. matlab 反激变压器,基于matlab的反激电路设计..doc
  10. 狂雨CMS小说采集规则 附教程
  11. Android之AsyncTask学习笔记
  12. 物联网架构----EMQ-Hook了解、连接Kafka发送消息
  13. 一辆汽车让你搞懂springmvc项目结构
  14. 怎么自学python-结合学习经历,谈一谈如何学习Python
  15. 10. PHP 常量
  16. Mysql8.0 15安装后怎么打开_最新最全mysql8.0.15安装配置及连接Navicat教程
  17. html5 微信 飞机 源码,[HTML5]微信飞机大战
  18. 概率论与数理统计-课程感悟
  19. 静态链接库和动态链接库
  20. Redis集群--Cluster--节点通信的过程(原理)

热门文章

  1. linux执行命令后日志打印输出到文件
  2. 淘宝/天猫获得店铺的所有商品 API 返回值说明
  3. win7字体_Latex设置加粗中文字体(粗宋,粗楷)
  4. linux下ping百度报错未知的名称或服务原因分析及yum安装[Errno 14] curl#6 - “Could not resolve host: mirrors.neusoft.edu.cn;
  5. vue-shop电商管理后台
  6. Troubleshooting BGP 免积分下载
  7. java execl导入
  8. 前端笔记:第二章:HTML怎么展示在网页上---- 第1集:怎么编写一个网页
  9. 液压系统管路流速推荐表_管径与流速推荐表1
  10. 【数据结构起航】:衡量算法的好坏--时间空间复杂度