<script>function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}</script>
作者:曾宏安,华清远见嵌入式学院高级讲师。
在C语言中,不同的成员使用共同的存储区域的数据构造类型称为共用体,简称共用,又称联合体。共用体占用空间的大小取决于类型长度最大的成员。共用体在定义、说明和使用形式上与结构体相似。两者本质上的不同仅在于使用内存的方式上。
定义一个共用体类型的一般形式为:
union 共用体名
{
成员表列;
};
看一个具体的例子:
union un
{
char c;
short s;
int i;
}myun;
共用体变量myun的三个成员:myun.c,myun.s和myun.i共用同一块内存(4个字节大小)。其中, myun.c只使用第一个字节,myun.s使用前两个字节而myun.i使用全部4个字节。如下图所示:
当我们给其中一个成员赋值时会影响到其他的成员。如 myun.i = 0x11223344,赋值后myun.c的值变成0x44,myun.s的值变成0x3344。
看一个实际应用的例子,要求计算无符号整型变量x前两个字节和后两个字节相加的和。构造共用体类型如下
union un
{
unsigned int i;
unsigned short s[2];
}myun;
myun.i = x;
myun.s[0]+myun.s[1]即为要计算的结果。
当然,我们也可以用以下公式直接计算: (x & 0xffff) + ( x >> 16)
分享到:
相关推荐
在C语言中,结构体(Struct)和共用体(Union)是两种非常重要的复合数据类型,它们允许我们将多个不同类型的数据成员组合成一个单一的实体,以方便管理和使用。接下来,我们将深入探讨这两种数据类型的定义、特点...
外部变量和共用体
2. **使用共用体**: 当给共用体的某个成员赋值时,其他成员的数据将被覆盖。由于共用存储区域,访问任何成员都会返回最后写入的数据。 3. **定义共用体变量**: 定义共用体变量的方法与结构体类似,例如:`union...
从给定的文件信息来看,主要讨论了C语言中的结构体(struct)与共用体(union)的概念、定义、初始化以及使用方式。下面将详细解释这些知识点。 ### 结构体(struct) #### 定义 结构体是C语言中一种复合数据类型,允许...
使用共用体可以节省内存,但需要注意的是,一旦某个成员被赋值,其他成员的值就会丢失。 3. **枚举类型(Enum)** 枚举类型是一种定义符号常量的便捷方式,适用于表示一组有限的、预定义的值。枚举类型定义了一个...
共用体 4-1 什么是共用体 使几个不同的变量共占同一段内存的结构,称为“共用体”类型的结构。结构体变量中的成员各自占有自己的存储空间,而共用体变量中的所有成员占有同一个存储空间。 4-2 共用体类型的定义 共用...
在C语言中,结构体(struct)和共用体(union)是两种用户自定义的数据类型,它们允许程序员根据需求组合不同的数据类型。本章主要讨论了这两种数据类型的特性和应用。 首先,结构体用于将逻辑上相关的一组不同类型...
共用体与枚举类型是c语言的重要内容之一,由于授课时间 的安排原因,学生的重视程度不够,所以有些学生掌握的不是很扎实,这里有关于共用体与枚举类型的学习课件,希望能给一些同行带来用处!
共用体中数据存储形式 共同体所占的内存空间等于它的所有成员中最“大”的一个所占的空间。 16位机器中int占16位,char占8位,因此int与char[2]正好同样占16位。 对于机器处理整数的方法,一般有大尾序、小尾序和...
c语言结构体与共用体之间的区别文档,比较详细的,欢迎下载。
1. 结构体和共用体的定义:结构体使用关键字struct定义,共用体使用关键字union定义。例如:struct Student{ char name[20]; int age; long int num;}stu; 2. 结构体和共用体的成员:结构体和共用体可以有多个成员,...
C语言结构体与共用体 C语言中结构体是一种构造数据类型,用途是把不同类型的数据组合成一个整体。结构体类型定义描述结构的组织形式,不分配内存。结构体类型定义的作用域是全局的或局部的,视定义的位置而定。 ...
* 共用体的使用需要注意变量的定义和赋值。 结构体和共用体是C语言中两种重要的数据类型,它们可以帮助开发者更好地描述和处理复杂的数据。通过学习和应用结构体和共用体,开发者可以编写更加高效、可靠和可维护的...
C++结构体、共用体和枚举类型详细介绍及简单例子详解,从基本代码开始讲解,代码小白入门教程
程序设计基础8 结构体共用体和枚举类型(2015春).ppt
电子技术第十章结构体与共用体 电子技术第十章结构体与共用体是编程语言中的一种重要概念,结构体是一种聚合数据类型,可以将多个变量组合成一个单一的变量,共用体则是一种特殊的结构体,具有相同的内存空间,但...
在这个示例中,我们将创建一个简单的C程序文件,演示结构体、共用体和用户定义类型(UDT)的使用。这些概念是C语言中用于组织数据的关键组成部分。 解释: 结构体 (Person): 用于封装不同类型的数据(这里是名字和...
大小端模式对C语言的共用体结构的影响:当共用体中有不同类型的变量,用一种变量类型给共用体赋值,但用另一种变量类型读取共用体的时候就涉及到大小端的问题。比如在问题1中,给int类型的变量i赋值,但通过char类型...
本章节将详细介绍共用体和typedef的定义、声明、使用方法及相关注意事项。 一、共用体 共用体是一种构造类型数据,由若干不同类型的数据项组成,每个数据项称为共用体成员。共用体的声明格式为: ```c union data ...