联合也是一种新的数据类型,它是一种特殊形式的变量。
联合说明和联合变量定义与结构十分相似。其形式为:
union 联合名
{
数据类型 成员名;
数据类型 成员名;
...
}联合变量名;
联合表示几个变量公用一个内存位置,在不同的时间保存不同的数据类型和不同长度的变量。
下例表示说明一个联合a_bc:
union a_bc
{
int i;
char mm;
};
再用已说明的联合可定义联合变量。
例如用上面说明的联合定义一个名为lgc的联合变量,可写成:
union a_bc lgc;
在联合变量lgc中, 整型量i和字符mm公用同一内存位置。
当一个联合被说明时, 编译程序自动地产生一个变量,其长度为联合中最大的变量长度。
联合访问其成员的方法与结构相同。同样联合变量也可以定义成数组或指针,但定义为指针时,也要用->符号, 此时联合访问成员可表示成:
联合名->成员名
另外, 联合既可以出现在结构内, 它的成员也可以是结构。
例如:
struct
{
int age;
char *addr;
union
{
int i;
char *ch;
}x;
}y[10];
若要访问结构变量y[1]中联合x的成员i, 可以写成:
y[1].x.i;
若要访问结构变量y[2]中联合x的字符串指针ch的第一个字符可写成:
*y[2].x.ch;
若写成y[2].x.*ch;是错误的。
1. 结构和联合都是由多个不同的数据类型成员组成,但在任何同一时刻,联合中只存放了一个被选中的成员, 而结构的所有成员都存在。
2. 对于联合的不同成员赋值,将会对其它成员重写,原来成员的值就不存在了,而对于结构的不同成员赋值互不影响的。
下面举一个例了来加深对联合的理解。
main()
{
union
{ /*定义一个联合*/
int i;
struct
{ /*在联合中定义一个结构*/
char first;
char second;
}half;
}number;
number.i=0x4241; /*联合成员赋值*/
printf(%c%c/n, number.half.first, mumber.half.second);
number.half.first='a'; /*联合中结构成员赋值*/
number.half.second='b';
printf(%x/n, number.i);
getch();
}
输出结果为:
AB
6261
从上例结果可以看出: 当给i赋值后, 其低八位也就是first和second的值;当给first和second赋字符后,这两个字符的ASCII码也将作为i 的低八位和高八位。
简单的说,就是联合里面的所有变量共用一个内存区域,区域大小是所有变量中最大的那个。改动某一个变量的值,其他的值也会随之改变。
分享到:
相关推荐
C++程序设计第8章结构和联合(共用体)知识点 【结构体类型】 * 结构体类型是C++中的一种数据类型,用于描述一组数据的集合。 * 结构体类型的定义:使用关键字struct,后跟结构体名称和成员列表。 * 结构体类型的...
在C语言中,结构体(structure)和联合(union)是两种重要的复合数据类型,它们允许我们将不同类型的数据组合在一起,形成更复杂的结构。本章主要讲解了如何使用结构体和联合进行编程。 首先,结构体是一种自定义...
结构与联合的具体应用 结构类型定义和结构变量说明: 在实际问题中,一组数据往往具有不同的数据类型。例如,在学生登记表中,姓名应为字符型;学号可为整型或字符型;年龄应为整型;性别应为字符型;成绩可为整型...
在C语言程序设计部分,涉及了C程序的基本结构,常量、变量和表达式,条件语句和开关语句,循环语句和goto语句,函数,数组,指针,结构和联合,以及输入/输出和文件操作。 数据结构部分: 1. 概述:理解数据的逻辑...
《指针、结构、联合和枚举》\n\n在C语言中,指针、结构、联合和枚举是四种非常重要的数据类型和构造,它们各自有着独特的功能和用途,尤其在C51环境下,这些概念显得尤为重要。\n\n首先,让我们深入理解指针。指针是...
在C语言中,"第八章结构及其它"主要讲解了几个关键概念,包括类型定义、结构、联合以及位运算和位段。这些概念是C语言高级特性的重要组成部分,允许程序员创建更加灵活和复杂的代码。 首先,类型定义(typedef)是...
C 语言具备了面向过程程序设计的基本要求,在诸多领域无可替代,也适合于构建程序设计基础。所以它是一门程序设计的公共基础课程,相信也...文档介绍 结构、枚举、联合的有关内容,《C语言程序设计 现代方法》配套讲义
本文总结了C++语言的基础知识点,涵盖了C++语言的特点、基本字符集、数据类型、变量和数据类型、运算符和表达式、控制结构、函数、数组和指针、结构和联合、枚举和类、输入输出、错误处理等方面。
实验指导书涵盖了C程序设计的基本概念、基本结构、函数、指针、结构和联合、类与对象等方面的知识。 1. 实验环境配置 实验环境配置包括硬件配置和软件配置。硬件配置需要PentiumⅡ以上PC兼容机或品牌机,配有彩色...
C++ 结构、联合、枚举 结构的定义与使用 联合的定义与使用 枚举的定义与使用
词语的聚合规则可以分为五种基本类型:主谓结构、述宾结构、述补结构、偏正结构和联合结构。这五种基本结构类型体现了词语的五种基本的组合关系。主谓结构反映了陈述对象和陈述内容的关系,例如“张老师来了”;述宾...
在C语言中,结构(Struct)和联合(Union)是两种重要的数据结构,它们允许我们组织和管理不同类型的数据。在第11章“结构与联合”中,我们将深入理解这两种构造类型及其应用。 结构是一种自定义的数据类型,它能够...
结构类型和联合类型是C语言中的重要概念,用于创建自定义的数据结构,将不同类型的数据组合在一起,方便管理和操作。在本篇内容中,我们将详细探讨这两种类型。 首先,结构类型(structure type)是一种构造数据...
总结来说,本文详细论述了如何通过MATLAB和ANSYS软件联合仿真技术,应用粒子群优化算法,实现桁架结构的重量最轻优化设计,同时满足应力和位移等约束条件。通过这种联合仿真方法,可以大大提高工程设计的自动化程度...
适用于初第七章:结构与联合 结构类型定义和结构变量说明 在实际问题中,一组数据往往具有不同的数据类型。例如, 在学生登记表中,姓名应为字符型;学号可为整型或字符型; 年龄应为整型;性别应为字符型;成绩可...
这次实验涵盖了C语言的多个关键主题,包括输入输出、流程控制、函数和程序结构、预编译处理、数组、指针、结构和联合以及文件操作等。下面将对这些知识点进行详细的解释。 1. 输入输出:C语言提供了标准输入输出库...
此外,还有结构(struct)和联合(union)等复杂数据结构。C语言的算法能力强大,是程序设计的关键。一个有效的算法应具备有穷性、确切性、输入、输出和可行性五个特征。 【数据结构】 数据结构是指数据的组织形式,...
汉语的句法结构主要包括偏正结构、述补结构、述宾结构、主谓结构和联合结构。这些结构在语法类型、成分组成和意义上都有所区别,例如偏正结构通常由修饰语和中心语组成,而主谓结构则包含主语和谓语。 最后,句法...
### 结构、联合和枚举 结构体在C语言中用于定义复合数据类型,而`typedef`可以为结构体定义一个新名称。结构体中可以包含指向自己的指针,这对于创建链表等数据结构非常重要。在结构体中实现抽象数据类型,可以使用...