专栏首页C语言及其他语言【编程经验】共用体的定义和使用

【编程经验】共用体的定义和使用

共用体的定义和使用

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

union 共用体名 { 数据类型 成员名 1; 数据类型 成员名 2; ...... 数据类型 成员名 n; }变量名表列;

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

引用方法如下:

共用体变量名.成员名 。

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

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

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

#include<stdio.h>

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

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

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

本文分享自微信公众号 - 编程范(dotcpp),作者:行者还小

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-04-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【编程经验】结构体的高级使用及共用体的定义和使用

    结构体数组 结构体数组是一个数组,其数组的每一个元素都是结构体类型。在实际应用中,经常用结构体数组来 表示具有相同数据结构的一个群体,如一个班的学生档案,...

    编程范 源代码公司
  • 结构体与共用体

    1、结构体的定义和使用 前面我们已经讨论过字符数组与字符串,字符指针也可以指向一个字符串,可以用字符串常量对字符 指针进行初始化。例如: char *str...

    编程范 源代码公司
  • Dev-Cpp使用入门教程

    今天给大家开始介绍Dev-C++这款编译器的使用方法,由于蓝桥杯竞赛的要求,今天给大家做入门介绍。 ? 下载地址依旧见:C/C++开发编译器等常用工具下载htt...

    编程范 源代码公司
  • 9.5 共用体类型

    2、结构体变量所占内存长度是各成员占的内存长度之和。每个成员分别占有其自己的内存单元。而共用体变量所占的内存长度等于最长的成员的长度。

    闫小林
  • NLP系列学习:基于Markov的拼音汉字转换方法

    这里最主要的是依靠两个模型:声学模型和语言模型,声学模型接收我们说话的音频,输出的结果为拼音,而从拼音转换到文字,这个就需要语言模型来进行操作。也就是这一篇文章...

    云时之间
  • 全连接与卷积计算的关系(全连接到全卷积)

    全连接与卷积计算的关系 ? 全连接的输入:前一层激活函数的输出 全连接的输出:下一层激活函数的输入 从图中可以看出,全连接的输出维度5,可以看做卷积计算中的c...

    ke1th
  • 漫话:如何给女朋友解释为什么一到年底,部分网站就会出现日期混乱的现象?

    2019年最后一天,在家里看着跨年晚会,享受着这一年最后一天的闲暇时光,女朋友在旁边玩手机。看了一会之后她突然问我一些很奇怪的问题。

    敖丙
  • 女朋友让我解释为什么一到年底,部分网站就会出现日期混乱的现象?

    2019年最后一天,在家里看着跨年晚会,享受着这一年最后一天的闲暇时光,女朋友在旁边玩手机。看了一会之后她突然问我一些很奇怪的问题。

    Guide哥
  • 通过 Python 以 playbook

    因为小弟毕设做一个简单的自动化运维系统,所以入了ansible的坑,现在想把毕设过程中一些关键技术的核心代码做下记录,也希望通过此平台与大家相互交流学习,共同进...

    py3study
  • Vue 组件通信

    该章节的内容到这里就全部结束了,源码我已经发到了 GitHub Vue-Communication 上了,有需要的同学可自行下载

    Nian糕

扫码关注云+社区

领取腾讯云代金券