一、联合体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相关推荐

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

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

  2. C语言-联合体union

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

  3. 超详细C语言联合体union详解

    文章目录 前言 一.联合(共用体)定义 二.联合的特点及运用 三.联合的大小计算 总结 前言 上一期C语言快速入门我们学习了枚举类型及相关知识点,这期我们来跟着笔者学习一下联合体相关知识,相信聪明的你 ...

  4. C语言联合体union详解

    一.联合(共用体)定义 联合是一种特殊的自定义类型,该种类型定义的变量也包含一系列的成员,特征是这些成员共用同一块空间,所以联合体也被称为共用体. 代码如下(示例): #include<stdi ...

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

    C语言学习-联合体Union和关键字Typedef 前言 1 联合体Union 1.1 Union认知 1.2 Union应用 2 关键字typedef 前言 内容主要为联合体Union和关键字Typ ...

  6. C语言联合体/共用体/union,枚举使用大全

    文章目录 一.前言 二.联合体 1.联合体基础 2. 联合体的使用方法和使用场景 2.1 多种访问内存途径共存 2.2 联合体union和大小端(big-endian.little-endian) 2 ...

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

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

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

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

  9. java c语言union转换_C语言联合体(union)的使用方法及其本质-union

    转载自:https://blog.csdn.net/sizhouqun_84342712/article/details/53187106 1.联合体union的基本特性--和struct的同与不同 ...

最新文章

  1. [Hdu3652]B-number(数位DP)
  2. LNMP基础架构介绍与安装
  3. 徐艳 中国科学院成都计算机,互动、碰撞!精彩纷呈!成都市中职计算机专业菜单培训在双流建校举行!...
  4. 进程间通信--无名管道(pipe)
  5. 按照时间,每天分区;按照数字,200000一个分区
  6. Chapter 15 配置服务器存储和群集 第1课
  7. JS !(非运算)详解
  8. 使用ASP.NET AJAX Control Toolkit中的NoBot控件拒绝垃圾发布程序 【转载】
  9. Uber宣布停止无人卡车项目,研发重心将转向无人小汽车
  10. C#获取程序所在的目录
  11. mysql中的rm语句用法_SQLMap部分命令用法详解
  12. 最高响应比优先算法(HRRF)及例题详解
  13. 连接网络计算机提示没有访问权限,无网络访问权限,教您无网络访问权限怎么办...
  14. Tensor A must be from the same graph as Tensor B
  15. 时钟同步服务器性能,GPS时间同步概述-GPS同步时钟的适应范围-GPS同步的优缺点-NTP服务器|同步时钟|子母钟|数显钟|GPS时间同步...
  16. 接入层-汇聚层组网设计配置案例——双归上行-负载
  17. Windows10与Ubuntu双系统安装记录
  18. 计算机网络-无线网络
  19. sql语句存储过程的写法(mysql和java)
  20. 扫码枪(条码枪)v1.0可以实现无焦点捕获扫码输入,并可上传数据到服务器

热门文章

  1. VScode主题设置
  2. java基础学习篇——java学习目录与应用场景
  3. pytest(四)--测试用例setup和teardown
  4. 【牛客网】DB测试题+英文
  5. iOS - IM 即时通讯
  6. 2007年春节联欢晚会经典台词
  7. PostgreSQL数据库系列之五:预写式日志WAL
  8. 断言是什么,怎么使用
  9. 工作五年,面试官说我只会CRUD!竟然只给我10K!
  10. php攻克技术难点,攻克的七大技术难题