在 C 语言中,允许几种不同类型的变量存放到同一段内存单元中,也就是使用覆盖技术,几个变量互 相覆盖。这种几个不同的变量共同占用一段内存的结构,被称为共用体类型结构,简称共用体。一般定义 形式为:

union 共用体名

{

数据类型 成员名 1;

数据类型 成员名 2;

......

数据类型 成员名 n;

}变量名表列;

只有先定义了共用体变量,才能在后续的程序中引用它。不能直接引用共用体变量,而只能引用共用

体变量中的成员。引用方法如下:

共用体变量名.成员名

共用体类型数据具有以下特点:

同一个内存段可以用来存放几种不同类型的成员,但是在每一瞬间只能存放其中的一种,而不是同时 存放几种。换句话说,每一瞬间只有一个成员起作用,其他的成员不起作用,即不是同时都存在 和起作用的。

共用体变量中起作用的成员是最后一次存放的成员,在存入一个新成员后,原有成员就失去作用。 共用体变量的地址和它的各成员的地址都是同一地址。

#include

union INFO

{

int a;

int b;

int c;

};

int main()

{

union INFO A;

A.a=1;

A.b=2;

A.c=3;

printf("a:%d\n",A.a);

printf("b:%d\n",A.b);

printf("c:%d\n",A.c);

return 0;

}

运行结果为:

a:3

b:3

c:3

不能对共用体变量名赋值,也不能企图引用变量名来得到一个值,并且,不能在定义共用体变量时对 它进行初始化。

不能把共用体变量作为函数参数, 也不能是函数返回共用体变量, 但可以使用指向共用体变量的指针。 共用体类型可以出现在结构体类型的定义中,也可以定义共用体数组。反之,结构体也可以出现在共 用体类型的定义中,数组也可以作为共用体的成员。

c语言共用体作用,共用体的定义和使用相关推荐

  1. 【C语言】结构体、共用体、位域

    结构体 1. 结构体的声明方法 struct struct_name {data_type member1;data_type member2;.. }; 这是其中一种声明方式~ 2.定义一个结构体变 ...

  2. C语言:结构体和共用体

    这是很基础的教程,我只是写给自己看,作为一个学习笔记记录一下,如果正在阅读的你觉得简单,请不要批评,可以关掉选择离开 如何学好一门编程语言 掌握基础知识,为将来进一步学习打下良好的基础. 上机实践,通 ...

  3. 【c语言基础必备】共用体union

    共用体是C 语言的另外一种构造类型,与前面介绍的结构体类似.共用体也由基本数据结构组合而成,但是共用体和结构体却有本质区别,因为结构体中的每个成员都占用存储单元,所以结构体所占用的内存大小为所有成员各 ...

  4. C语言入门系列之10.结构体和共用体

    文章目录 一.结构体变量的基本使用 1.概述 2.定义结构体类型变量的方法 3.结构体变量的引用 4.结构体变量的初始化 二.结构体的高级应用 1.结构体数组 Ⅰ定义结构体数组 Ⅱ结构体数组的初始化 ...

  5. C语言结构体与共用体03

    小甲鱼结构体与共用体03 实战例题:有一个结构体变量stu,内含学生学号.姓名和3门课程的成绩.通过调用函数print将它们输出. ①先用结构体变量作函数参数: //先用结构体变量作函数参数 #inc ...

  6. C语言-结构体与共用体

    int 4字节:char 1字节:short 2字节:float 4字节: 1字节bytes=8位bits(2^8): struct date {int month;int day;int year; ...

  7. C语言程序设计(Part Ⅸ)——链表/共用体类型/枚举类型

    C语言程序设计(Part Ⅸ)的整理笔记,若有错误,欢迎指正. 用指针处理链表 如果有一批数据要存储和引用,有两种方法: 一种方法是采取分配固定存储单元的方法,例如数组.但是在程序执行期间,数组的大小 ...

  8. C 语言编程 — 高级数据类型 — 共用体

    目录 文章目录 目录 前文列表 共用体 定义共用体 访问共用体成员 前文列表 <程序编译流程与 GCC 编译器> <C 语言编程 - 基本语法> <C 语言编程 - 基本 ...

  9. 《c语言从入门到精通》看书笔记——第11章 结构体和共用体

    1.结构体: "结构体"是一种构造类型,它是由若干"成员"组成的,其中的每一个成员可以是一个基本数据类型或者有事一个构造类型. (1)声明结构体时使用的关键字是 ...

最新文章

  1. 修改SQL SERVER内置存储过程
  2. 速看!高校开学返校的40个最新信息
  3. aix oracle查看字符集,AIX下oracle 10g 修改字符集为ZHS16GBK
  4. nssl1157-简单数学题【约数,换元法】
  5. 简述Qt编程中遇到的编码格式问题
  6. java打印平行四边形
  7. STL_stack/queue
  8. [再学Python] - 1 - 数据类型
  9. Linux 端蓝牙调试
  10. 可以嵌入ppt的课堂点名器_宏大智慧课堂支招:孩子和学霸的差距,就在课上课下55分钟里...
  11. 侯捷C++八部曲笔记(三、设计模式)
  12. LSF集群作业管理系统
  13. 多维流数据的自适应实时异常检测
  14. 一套实用性最强的商业方案,让他白手起家做到全国十大财阀之一!
  15. win10浏览器闪退_win10 edge浏览器闪退打不开的恢复方法
  16. 快应用开发工具黑屏解决方案
  17. Git教程及常用命令
  18. python_操作linux上的mysql
  19. 抖音小程序实践一:申请初始化
  20. 根文件制作:ramdisk.image.gz和uramdisk.image.gz文件转换,修改文件系统内容

热门文章

  1. WPF 滚动条控件ScrollViewer的使用及自定义滚动条控件(一)
  2. PairWise策略设计测试用例及PICT测试用例工具安装使用(实现测试用例的自动化)
  3. 剑指Offer(43)1~n整数中1出现的次数
  4. Science新闻:肠道菌群又添一大功能,揭示你的真实年龄
  5. SQL报错提示无效的标识符【Cause: java.sql.SQLSyntaxErrorException: ORA-00904: “WFT“.“PROC_DEF_ID“: 标识符无效】
  6. C++怎么保留有效数字
  7. 三月的最后一天,叫李明生的程序员决定去死 | 程序员有话说
  8. Pytest官网地址
  9. 超算中心和根服务器,华数将和下一代互联网国家工程中心共建IPv6根服务器
  10. MSTAR芯片的I2C 引脚配置