`
clark1231
  • 浏览: 247478 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

结构和联合

c++ 
阅读更多

联合也是一种新的数据类型,它是一种特殊形式的变量

联合说明和联合变量定义与结构十分相似。其形式为:
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赋值后, 其低八位也就是firstsecond的值;当给firstsecond赋字符后,这两个字符的ASCII码也将作为i 的低八位和高八位。
简单的说,就是联合里面的所有变量共用一个内存区域,区域大小是所有变量中最大的那个。改动某一个变量的值,其他的值也会随之改变。

分享到:
评论

相关推荐

    C 程序设计 第8章 结构和联合(共用体).ppt

    C 程序设计 第8章 结构和联合(共用体).ppt

    C++程序设计 第8章 结构和联合(共用体).ppt

    C++程序设计 第8章 结构和联合(共用体).ppt

    实验14结构与联合

    实验14结构与联合 1.实验学时 2学时 2.实验目的 (1)掌握结构体类型变量的定义和使用; (2)掌握结构体类型数组的概念和使用; (3)掌握链表的概念,初步学会对链表进行操作; (4)掌握共用体的概念与使用。 3...

    结构与联合的具体应用

    帮助大家更好的理解C语言中结构和联合的使用以及遇到的问题

    C语言-结构、联合和枚举.pptx

    C 语言具备了面向过程程序设计的基本要求,在诸多领域无可替代,也适合于构建程序设计基础。所以它是一门程序设计的公共基础课程,相信也...文档介绍 结构、枚举、联合的有关内容,《C语言程序设计 现代方法》配套讲义

    C++ 结构、联合、枚举 及 实例

    C++ 结构、联合、枚举 结构的定义与使用 联合的定义与使用 枚举的定义与使用

    指针、结构、联合和枚举

    讲解C语言中指针、结构、联合和枚举的用法 仿真环境采用的是C51环境

    C语言程序设计标准教程

    适用于初第七章:结构与联合 结构类型定义和结构变量说明  在实际问题中,一组数据往往具有不同的数据类型。例如, 在学生登记表中,姓名应为字符型;学号可为整型或字符型; 年龄应为整型;性别应为字符型;成绩可...

    C++初学者指南(原版)

    接下来介绍友元函数,然后是结构和联合,以及 this 关键字。此模块最后介绍运算符重载,这是 C++ 中最吸引人的功能之一。 第 10 章:继承、虚函数和多态性 此模块讨论 C++ 中与面向对象编程直接相关的三个功能:继承...

    C 和指针.pdf

     全书共18章,覆盖了数据、语句、操作符和表达式、指针、函数、数组、字符串、结构和联合等几乎所有重要的C编程话题。书中给出了很多编程技巧和提示,每章后面有针对性很强的练习,附录部分则给出了部分练习的解答...

    富士通单片机C语言手册基础篇中文版

    第二节 C 语言的程序结构 2 第三节 C 语言的关键字和标识符 3 第二章 C 语言的基本语法 5 第一节 数据类型 5 2 1 1 整型int 5 2 1 2 浮点型float 6 2 1 3 字符型char 6 2 1 4 指针型 7 2 1 5 无值型void 8 2 1 7 ...

    基于注意力的端到端韵律结构和重音联合预测方法

    本书作者俞栋、邓力均是该领域的著名专家,他们是深度学习在应用领域取得突破性进展的推动者与实践者,他们在书中分享的研究...全书首先概要介绍了传统语音识别理论和经典的深度神经网络核心算法。接着全面而深入地...

    C程序设计_结构体和共用同_实验报告

    C程序设计 结构体和共用同 实验报告 C言语程序设计。C言语程序设计大学实验,实验报告。

    结构 联合和枚举PPT学习教案.pptx

    结构 联合和枚举PPT学习教案.pptx

    C++ 大学自学教程 C++ 大学教程 第7版 2

    6,结构和联合 7,C++数据进阶 8,指针、地址和动态存储器 9,引用变量 10,递归 11,预处理器 12,函数模板 13,程序组织结构 第二部分 使用类 14,C++类 15,构造函数和析构函数 16,转换 17,类对象数组 18,类...

    Intel汇编语言程序设计 第四版

    ·对过程、递归、堆栈参数、结构和联合进行了更多的介绍 ·布尔表达式、真值表和流程图 ·基本的字符串处理、排序和查找算法 ·实地址模式和保护模式下的位映射图形 ·IEEE浮点二进制表示法 ·虚拟机体系结构,...

    c++大学自学教程 c++大学教程 第七版1

    6,结构和联合 7,C++数据进阶 8,指针、地址和动态存储器 9,引用变量 10,递归 11,预处理器 12,函数模板 13,程序组织结构 第二部分 使用类 14,C++类 15,构造函数和析构函数 16,转换 17,类对象数组 18,类...

    Intel汇编语言程序设计(第四版)

    ·对过程、递归、堆栈参数、结构和联合进行了更多的介绍 ·布尔表达式、真值表和流程图 ·基本的字符串处理、排序和查找算法 ·实地址模式和保护模式下的位映射图形 ·IEEE浮点二进制表示法 ·虚拟机体系结构,...

    c++大学自学教程 c++大学教程 第七版 3

    6,结构和联合 7,C++数据进阶 8,指针、地址和动态存储器 9,引用变量 10,递归 11,预处理器 12,函数模板 13,程序组织结构 第二部分 使用类 14,C++类 15,构造函数和析构函数 16,转换 17,类对象数组 18,类...

Global site tag (gtag.js) - Google Analytics