C语言 | 联合体(union)、typedef
一、联合体union
1.联合体含义
- 联合 union 是一个能在同一个存储空间存储不同类型数据的类型;
- 联合体所占的内存长度等于其最长成员的长度倍数,也有叫做共用体;
- 同一内存段可以用来存放几种不同类型的成员,但每一瞬时只有一种起作用;共用体变量中起作用的成员是最后一次存放的成员,在存入一个新的成员后原有的成员的值会被覆盖;
- 共用体变量的地址和它的各成员的地址都是同一地址。
2.联合体与结构体
- 结构体的各个成员会占用不同的内存,互相之间没有影响;而共用体的所有成员占用同一段内存,修改一个成员会影响其余所有成员。
- 结构体占用的内存大于等于所有成员占用的内存的总和(存在偏移对齐),共用体占用的内存等于最长的成员占用的内存。共用体使用了内存覆盖技术,同一时刻只能保存一个成员的值,如果对新的成员赋值,就会把原来成员的值覆盖掉。
union MyUnion
{int a;char b;float c;
};
void main()
{printf("联合体MyUnion的字节大小为:%d\n", sizeof(union MyUnion));//联合体MyUnion的字节大小为:4
}
二、typedef
- typedef为 c 语言的关键字,作用是为一种数据类型 ( 基本类型或自定义数据类型 ) 定义一个新名字,不能创建新类型。
- 与 # define 不同, typedef 仅限于数据类型,而不能是表达式或具体的值;
- # define 发生在预处理, typedef 发生在编译阶段。
typedef struct student StructStu;
struct student {char* name;int age;char* address;
};
C语言 | 联合体(union)、typedef相关推荐
- C语言联合体union详解与实例
目录 定义 类型定义 变量定义 存储规则 通过联合体获取存储大小端 和结构体类似,联合体(union)是C语言中一种自定义数据类型.联合体中可以定义多个类型的成员变量,但所有成员共享同一块内存区域,所 ...
- C语言-联合体union
目录: 一.union的定义说明使用 1.union的定义 2.union的说明 3.union的使用 二.联合体union的基本特性--和struct的同与不同 三.双刃剑--多种访问内存途径共存 ...
- 超详细C语言联合体union详解
文章目录 前言 一.联合(共用体)定义 二.联合的特点及运用 三.联合的大小计算 总结 前言 上一期C语言快速入门我们学习了枚举类型及相关知识点,这期我们来跟着笔者学习一下联合体相关知识,相信聪明的你 ...
- C语言联合体union详解
一.联合(共用体)定义 联合是一种特殊的自定义类型,该种类型定义的变量也包含一系列的成员,特征是这些成员共用同一块空间,所以联合体也被称为共用体. 代码如下(示例): #include<stdi ...
- C语言学习—联合体Union和关键字Typedef
C语言学习-联合体Union和关键字Typedef 前言 1 联合体Union 1.1 Union认知 1.2 Union应用 2 关键字typedef 前言 内容主要为联合体Union和关键字Typ ...
- C语言联合体/共用体/union,枚举使用大全
文章目录 一.前言 二.联合体 1.联合体基础 2. 联合体的使用方法和使用场景 2.1 多种访问内存途径共存 2.2 联合体union和大小端(big-endian.little-endian) 2 ...
- C/C++语言中联合体union的妙用
联合体union的基本概念 在C/C++语言中,有时需要在同一段内存单元中存放不同类型的变量,如把一个整形变量int.一个字符型变量char和一个双精度实型变量double放在同一个地址开始的内存单元 ...
- C语言union合并两个字节,C语言中的联合体union所占内存方式
当多个数据需要共享内存或者多个数据每次只取其一时,可以利用联合体(union).在C Programming Language 一书中对于联合体是这么描述的: 1)联合体是一个结构: 2)它的所有成员 ...
- java c语言union转换_C语言联合体(union)的使用方法及其本质-union
转载自:https://blog.csdn.net/sizhouqun_84342712/article/details/53187106 1.联合体union的基本特性--和struct的同与不同 ...
最新文章
- [Hdu3652]B-number(数位DP)
- LNMP基础架构介绍与安装
- 徐艳 中国科学院成都计算机,互动、碰撞!精彩纷呈!成都市中职计算机专业菜单培训在双流建校举行!...
- 进程间通信--无名管道(pipe)
- 按照时间,每天分区;按照数字,200000一个分区
- Chapter 15 配置服务器存储和群集 第1课
- JS !(非运算)详解
- 使用ASP.NET AJAX Control Toolkit中的NoBot控件拒绝垃圾发布程序 【转载】
- Uber宣布停止无人卡车项目,研发重心将转向无人小汽车
- C#获取程序所在的目录
- mysql中的rm语句用法_SQLMap部分命令用法详解
- 最高响应比优先算法(HRRF)及例题详解
- 连接网络计算机提示没有访问权限,无网络访问权限,教您无网络访问权限怎么办...
- Tensor A must be from the same graph as Tensor B
- 时钟同步服务器性能,GPS时间同步概述-GPS同步时钟的适应范围-GPS同步的优缺点-NTP服务器|同步时钟|子母钟|数显钟|GPS时间同步...
- 接入层-汇聚层组网设计配置案例——双归上行-负载
- Windows10与Ubuntu双系统安装记录
- 计算机网络-无线网络
- sql语句存储过程的写法(mysql和java)
- 扫码枪(条码枪)v1.0可以实现无焦点捕获扫码输入,并可上传数据到服务器