C语言学习—联合体Union和关键字Typedef
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相关推荐
- mfc实现c语言的注释,C语言学习:标识符、关键字、注释、表达式和语句
正文共:1526 字 2 图.预计阅读时间: 4 分钟. 文章由源世界原创,转载剽窃必究! 标识符 界说变量时,我们使用了诸如 a.abc.mn123 这样的名字,它们都是程序员自己起的,一般能够表达 ...
- C/C++语言中联合体union的妙用
联合体union的基本概念 在C/C++语言中,有时需要在同一段内存单元中存放不同类型的变量,如把一个整形变量int.一个字符型变量char和一个双精度实型变量double放在同一个地址开始的内存单元 ...
- (1)c语言学习总结之从关键字到循环结构
一.关键字和标示符 1.关键字:c规定的有特殊含义的单词(也就是系统起的名字),全部是小写,有32个; 由关键字引出数据类型和流程类型 1.分类: (1)数据类型:整型用int标示,字符型用char表 ...
- C语言 | 联合体(union)、typedef
一.联合体union 1.联合体含义 联合 union 是一个能在同一个存储空间存储不同类型数据的类型: 联合体所占的内存长度等于其最长成员的长度倍数,也有叫做共用体: 同一内存段可以用来存放几种不同 ...
- c语言存储类型关键字作用,c语言学习笔记.关键字.存储类型关键字等
关键字const 1.修饰变量. 修饰的对象为常量,只读. 2.修饰指针. const 也可以和指针变量一起使用,这样可以限制指针变量本身,也可以限制指针指向的数据. const 离变量名近就是用来修 ...
- C语言联合体union详解与实例
目录 定义 类型定义 变量定义 存储规则 通过联合体获取存储大小端 和结构体类似,联合体(union)是C语言中一种自定义数据类型.联合体中可以定义多个类型的成员变量,但所有成员共享同一块内存区域,所 ...
- C语言-联合体union
目录: 一.union的定义说明使用 1.union的定义 2.union的说明 3.union的使用 二.联合体union的基本特性--和struct的同与不同 三.双刃剑--多种访问内存途径共存 ...
- C语言union合并两个字节,C语言中的联合体union所占内存方式
当多个数据需要共享内存或者多个数据每次只取其一时,可以利用联合体(union).在C Programming Language 一书中对于联合体是这么描述的: 1)联合体是一个结构: 2)它的所有成员 ...
- 【C 语言】数据类型本质 ( 数据类型别名 | typedef 关键字 | 为复杂数据类型设置别名 | 为简单数据类型设置别名 )
文章目录 一.typedef 关键字 1.为复杂数据类型设置别名 2.为简单数据类型设置别名 二.代码示例 一.typedef 关键字 1.为复杂数据类型设置别名 使用 typedef 关键字为 复杂 ...
最新文章
- Linux 的内存管理工具和调优参数
- 如何使用阿里云服务器
- leetcode算法题--数组中数字出现的次数 II
- 第十二章 类和动态内存分配
- mysql cluster 查看最大索引数_MySQL 数据库优化,看这篇就够了
- php获取页面的可视内容高度,网页制作技巧:获取页面可视区域的高度_css
- 假期别在家里要发霉了?可以靠他们度过无聊时光
- microsoft vbscript编译器错误怎么解决_win7系统ie应用程序错误怎么办 ie应用程序错误解决方法【详解】...
- matlab 反激变压器,基于matlab的反激电路设计..doc
- 狂雨CMS小说采集规则 附教程
- Android之AsyncTask学习笔记
- 物联网架构----EMQ-Hook了解、连接Kafka发送消息
- 一辆汽车让你搞懂springmvc项目结构
- 怎么自学python-结合学习经历,谈一谈如何学习Python
- 10. PHP 常量
- Mysql8.0 15安装后怎么打开_最新最全mysql8.0.15安装配置及连接Navicat教程
- html5 微信 飞机 源码,[HTML5]微信飞机大战
- 概率论与数理统计-课程感悟
- 静态链接库和动态链接库
- Redis集群--Cluster--节点通信的过程(原理)
热门文章
- linux执行命令后日志打印输出到文件
- 淘宝/天猫获得店铺的所有商品 API 返回值说明
- win7字体_Latex设置加粗中文字体(粗宋,粗楷)
- linux下ping百度报错未知的名称或服务原因分析及yum安装[Errno 14] curl#6 - “Could not resolve host: mirrors.neusoft.edu.cn;
- vue-shop电商管理后台
- Troubleshooting BGP 免积分下载
- java execl导入
- 前端笔记:第二章:HTML怎么展示在网页上---- 第1集:怎么编写一个网页
- 液压系统管路流速推荐表_管径与流速推荐表1
- 【数据结构起航】:衡量算法的好坏--时间空间复杂度