使用C语言时,常常使用struct,对于union类型却几乎没有用过,只知道它是联合类型,各字段共享一块内存,实际应用中却不知道它的具体用途。
今天读《编程卓越之道》中看到有对其使用的简单介绍,记录在此:
首先摘录一下struct和union的重要区别:
struct为每个字段在不同的偏移处分配存储空间,而联合则将所有的字段重叠在内存中的相同偏移处。
联合类型的用途:
1、创建别名。别名是内存对象原名之外的其他名字。比如在程序中经常会用到将一个数据类型强制转换为另一个类型,这个操作可以使用联合来代替。
比如typedef union{
char c;
uint32 u;
}CharOfUnion v;
可以通过v.u来操作一个uint32类型的对象,当需要将uint32变量的低端字节看做一个字符的时候,只需要访问v.c就可以了。
实际应用中,大多数的协议结构定义中,都会使用union类型来定义。
2、使用联合来将较大的对象分解成组成这个对象的各个字节。
typedef union{
uint u;
char bytes[4];
}asBytes composite;
可以使用composite.bytes数组来访问composite.u字段的各个字节。
分享到:
相关推荐
联合体(union)在C语言中是一个特殊的数据类型,能够存储不同类型的数据在同一个内存位置。可以定义一个联合体使用许多成员,但只有一个部件可以包含在任何时候给定的值。联合体会提供使用相同的存储器位置供多用途的...
c++11中union除了继承c语言的数据共享内存之外,行为上越来越像一个类,比如成员默认是public类型。 在C++11以后,很多基础语法都进行了修正。其中 union 的行为向类对象进行了发展,在兼容原有语法定义的基础上进行...
(1) char :声明字符型变量或函数 ...(10) union:声明共用体(联合)数据类型 (11) unsigned:声明无符号类型变量或函数 (12) void :声明函数无返回值或无参数,声明无类型指针(基本上就这三个作用)
1.5 Turbo C 2.0集成开发环境的使用 1. 数据类型、变量和运算符 2. 数据类型 3. 关键字和标识符 4. 变量 5. 运算符 Turbo C 程序设计初步 1.1 输入输出函数及控制流程语句 1.2 文件的输入输出函数 1.3 ...
主要介绍了 C语言中联合体union的实例详解的相关资料,希望通过本文能帮助到大家,让大家理解掌握这部分内容,需要的朋友可以参考下
1.文件的基本概念,C语言中的两种文件(识记) 2.文件的打开、关闭和文件结束测试,文件的读写,文件的定位(识记) 2.1文件操作函数 2.2 文件权限 七.算法与编程(综合应用) 1 使用Turbo C集成开发环境调试程序...
Union(*S1,*S2) 初始条件:集合S1和S2存在。 操作结果:生成一个由S1和S2的并集构成的集合,返回到S1。 Intersection (*S1,*S2) 初始条件:集合S1和S2存在。 操作结果:生成一个...
(一)、变量类型和表示方法 1.什么是变量?一句话,变量是存储数据的值的空间。由于数值的类型有多种,有整数、小数(浮点数)、字符等等,那么对应的变量就有整型变量、浮点型变量、字符型变量。变量还有其他的具体...
1.1Turbo C语言概述 1.2 C 语言的特点 1.3 Turbo C 概述 1.4 Turbo C 2.0的安装和启动 1.5 Turbo C 2.0集成开发环境的使用 1.数据类型、变量和运算符 2.数据类型 3.关键字和标识符 4.变量 5.运算符 输入输出...
1.1Turbo C语言概述 1.2 C 语言的特点 1.3 Turbo C 概述 1.4 Turbo C 2.0的安装和启动 1.5 Turbo C 2.0集成开发环境的使用 1.数据类型、变量和运算符 2.数据类型 3.关键字和标识符 4.变量 5.运算符 输入输出函数...
单项选择题………………………第002页 ...B) 不同类型的变量可以在一个表达式中 C) 在赋值表达式中等号(=)左边的变量和右边的值可以是不同类型 D) 同一个运算符号在不同的场合可以有不同的含义
一,基础篇 1.1Turbo C语言概述 1.2 C 语言的特点 1.3 Turbo C 概述 1.4 Turbo C 2.0的安装和启动 1.5 Turbo C 2.0集成开发环境的使用 1.数据类型、变量和运算符 2.数据类型 3.关键字和标识符 4.变量 5.运算符 ...
在基础篇中主要讲到了以下内容:1.1Turbo C语言概述 1.2 C 语言的特点 1.3 Turbo C 概述 1.4 Turbo C 2.0的安装和启动 1.5 Turbo C 2.0集成开发环境的使用 1.数据类型、变量和运算符 2.数据类型 3.关键字和标识符 4...
1.5 Turbo C 2.0集成开发环境的使用 1. 数据类型、变量和运算符 2. 数据类型 3. 关键字和标识符 4. 变量 5. 运算符 Turbo C 程序设计初步 1.1 输入输出函数及控制流程语句 1.2 文件的输入输出函数 1.3 ...
派生数据类型:array, struct, union, enum 等。 指针类型:例如 int*, char* 等。 2. 变量和常量 变量:声明并分配内存空间。 常量:使用 const 关键字声明,值不可改变。 3. 运算符 算术运算符:+, -, *,...
C语言结构体,可谓是C强大...C语言中,结构体的声明、定义是用到关键字struct,就像联合体用到关键字union、枚举类型用到enum关键字一样,事实上,联合体、枚举类型的用法几乎是参照结构体来的。结构体的声明格式如下:
一,基础篇 1.1Turbo C语言概述 1.2 C 语言的特点 1.3 Turbo C 概述 1.4 Turbo C 2.0的安装和启动 1.5 Turbo C 2.0集成开发环境的使用 1.数据类型、变量和运算符 2.数据类型 3.关键字和标识符 4.变量 5.运算符 ...
别的先不说了,都工作这么长时间了,还回过头来总结union,确实有点过分,要是和大家说我一直从事于C++开发,还不懂union,大家可能还真的不信。我们每天都在总结那些看似高端的东西,什么设计模式(当然我也有总结...
在C语言中,还有另外一种和结构体非常类似的语法,叫做共用体(Union),它的定义格式为: union 共用体名{ 成员列表 }; 共用体有时也被称为联合或者联合体,这也是 Union 这个单词的本意。 结构体和共用体的...