C++的union

C++:34---union:联合/共用体,一种节省空间的类 一、联合(union)概述联合(union)是一种特殊的类一个union可以有多个数据成员,但是在任意时刻只有一个数据成员可以有值。当我们给union的某个成员赋值之后,该union的其... 阅读详情
  1. union的默认访问权限为public,和struct一样,class则是private,他们的子类也是如此,(class和struct还有struct无法作为模板这方面的不同点)
  2. union所有成员共同使用一块内存,因此union中只能有一个成员被赋值,union的内存大小等于成员中内存最大的内存(比如有一个int和byte成员,union的大小为int所占的内存大小),每次重新赋值则会覆盖前面赋值的成员的值。
union U {

    unsigned short int aa;

    struct {

        unsigned int bb: 7;//(bit 0-6)

        unsigned int cc: 6;//(bit 7-12)

        unsigned int dd: 3;//(bit 13-15)
    };
};

struct UU{

    unsigned int bb: 7;//(bit 0-6)

    unsigned int cc: 6;//(bit 7-12)

    unsigned int dd: 3;//(bit 13-15)
};

int main() {
    unsigned short int a;
    U u;
    u.aa = 10;
    UU uu;
    
    // 说明U取的大小为struct的大小,而不是unsigned short int的值,因为unsigned short int的大小装不下一个结构体
    cout << sizeof(a) << endl;		// 输出2
    cout << sizeof(u) << endl;		// 输出4
    cout << sizeof(UU) << endl;		// 输出4
    cout << sizeof(uu) << endl;		// 输出4
    cout << sizeof(U) << endl;		// 输出4


    return 0;
}
【C/C++面试必备 | 基础概念】union的用法 这一篇文章来总结一下union的用法。 定义:union是一种“类似”与struct的联合体,联合的所有成员引用的是内存中的相同位置,以最大的成员的内存长度作为union的内存大小。union主要用来节省空间,默认的访问权限是公有的。 注意点: (1)同一个内存段可以用来存放几种不同类型的成员,但在每一个时刻只能存在其中一种,而不能同时存放几种,即每一瞬间只有一个成员起作用,其它的成... 阅读详情

相关推荐

C++ 中的union、struct 和class 的异同

本文中写的都是它们在C++中的异同,而非C 中的,因为在C 中无论是union还是stuct 都没有操作,也没有访问控制的概念。

C++对象里的union用法,内嵌指针的原理。

C++class中的无名union探索。内嵌指针。

qq_42935201的博客 1292

STM32开发者必看:如何在正点原子探索者开发板上快速移植CANopenNode协议栈

本文为STM32开发者提供了在正点原子探索者开发板上快速移植CANopenNode协议栈的实战指南。文章详细介绍了从环境准备、硬件抽象层适配到协议栈初始化与测试的全过程,并分享了PDO配置与性能优化等关键技巧,帮助开发者高效实现CANopen标准化通信。

weixin_29173777的博客 462

C++ struct结构体 class类 union联合体的区别

一、结构体和类 首先一句话——在C++中,结构体和类没有什么区别,唯一的区别就是:默认的访问权限和继承访问权限不同。其他的,类能怎么干,结构体也能怎么干! 默认访问权限:结构体是public,类是private 默认继承访问权限:结构体是public,类是private 讲一下默认继承访问权限,比如如下代码, struct A { char a; }; struct B : ...

Magnum的博客 1932

使用python获取同花顺免费版和同花顺远航版自选股数据用于量化交易

在做量化交易时,有时需要在盘中实时监控同花顺自选股的数量,以便灵活地自定义提醒、捕捉买卖时点等。那么,如何使用python获取同花顺自选股数据呢?

tzzqn2008的专栏 3682

echarts实现3D地图——map3D

【代码】echarts实现3D地图——map3D。

xiaoququ的博客 7323

C++ union、struct 和 class

C++ union、struct和class

xiao_ma_nong_last的博客 548

(王道计算机组成原理)第二章数据的表示和运算-第三节:运算方法和运算电路 1(基本运算部件)

本文主要介绍了计算机组成原理中的加法器和算术逻辑单元(ALU)的基本概念与实现原理。首先,文章详细讲解了一位全加器的工作原理,包括其输入输出、逻辑表达式及真值表。接着,介绍了并行加法器的两种类型:串行进位和并行进位的加法器,分析了它们的优缺点。随后,文章探讨了带标志位的加法器,说明了如何通过标志位生成逻辑来判断加法结果的状态。最后,文章阐述了ALU的功能及其实现原理,包括ALU的基本结构、控制信号的作用以及在实际考试中的图示表示。通过这些内容,读者可以全面了解加法器和ALU在计算机中的重要作用及其工作原理。

快乐江湖的博客 3837

C/C++ - struct&union&class 附大小端简明例子

(一)区别 1.在C中,struct和union的区别: struct:各成员各自拥有自己的内存,各自使用互不干涉,同时存在的,遵循内存对齐原则。一个struct变量的字节对齐长度至少能容纳最大的成员变量,而且要满足是所有成员类型大小的整数倍。 union:各成员共用一块内存空间,并且同时只有一个成员可以得到这块内存的使用权(对该内存的读写),各变量共用一个内存首地址。一个union变量的...

Gosick_Geass_Gate的博客 510

WebRTC之beamforming算法

CSND已永久停更,最新版唯一来源点击下面链接跳转: 语音增强和语音识别网页书 坐标问题 这里以笔记本为例进行说明,当笔记本按如下方式打开: 首先是键盘和液晶屏呈90度,然后鼠标上方,也就是液晶屏上方正中间是camera,把平行于键盘的面看成是xy平面,把液晶屏所在的面看成是xz平面,所有平面的原点都在Camera的位置。 方位角:从原点开始,Camera的右侧是0度,逆时针方...

shichaog的专栏 1万+

【图像去噪】基于梯度为0法实现图像去噪附matlab代码

近几年,徐立提出的 L0 梯度最小化模型在图像平滑领域得到了广泛的应用和发展[11]. 和以往的局部滤波模型不同的是该模型可以全局的估计图像的像素值,因此,L0 梯度最小化模型在处理图像的同时能够很好的保护图像的边缘.​。

qq_59747472的博客 184

【Cpp】C++中的union

一、继承C语言的union C++中的共用体也是从C中继承过来的,沿用了C中的所有特性 二、C++中union的提升 C++中在定义共用体变量的时候也可以省略union关键字(类似enum),直接类型名 变量名 C++中,union的成员还可以是简单对象,但是对象不能包含自定义构造函数和析构函数 在C语言中,也可以通过函数指针实现类型的功能: union myunion { void...

baymaxly的博客 990

【优化求解】基于matlab粒子群算法PSO确定最佳开关角对称级联多层逆变器【含Matlab源码 13080期】

粒子群算法PSO确定最佳开关角对称级联多层逆变器 完整代码,包运行;可提供运行操作视频!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 97

C++中的union介绍

union介绍   共用体,也叫联合体,在一个“联合”内可以定义多种不同的数据类型, 一个被说明为该“联合”类型的变量中,允许装入该“联合”所定义的任何一种数据,这些数据共享同一段内存,以达到节省空间的目的。union变量所占用的内存长度等于最长的成员的内存长度。 union与struct比较 先看一个关于struct的例子: struct student { char mark; long num; float score; }; 其struct的内存结构如下

std7879的博客 1万+

基于STM32设计的万能红外遥控器(学习型)

当前介绍了一种基于STM32微控制器设计的红外遥控器,支持接收解码功能和发送功能,可以将接收的码原样发送出去。 红外遥控器作为智能设备控制方式之一,在一定程度上满足了人们对于快速方便控制的需求。 当前设计的红外遥控器支持学习模式和发送模式。通过矩阵键盘上的数字键选择发送对应的控制码。 一共支持学习10个控制码,对应矩阵键盘上的数字。0~9。

6559

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

C++之union详解

union的介绍

m0_72542983的博客 4315

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

C++中的union

前言:说实在的,平时很少用到union。今天偶尔用了一下,编译器就给了我一个下马威,一个看似没有问题的union定义被编译器抱怨有错误。看着那些莫名其妙的错误信息,一开始还真是摸不着头脑,看样子C++中的union和C中的union还真是不一样。先给大家看一个例子class A...{public:  A() ...{}  int _k;};union B...{  A _a;};in

marrco2005的专栏 3721

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

C++ union共用体的使用方法

C++ union共用体的使用方法定义互斥赋值sizeof( )转载链接 定义 union即为联合,它是一种特殊的类。通过关键字union进行定义,一个union可以有多个数据成员。例如: union Token{ char cval; int ival; double dval; }; 以上代码定义了一个名为Token的联合,该联合中包含了3个数据成员。 互斥赋值 在任意时刻...

皮皮#2500 3569

C++关键字之——union

C++关键字之——union

StephenRay的博客 5841

C++中union的应用剖析

C++中union的应用剖析作者:袁小凯华南理工大学计算机研究所北区研发二部Email – ccplusplus@21cn.com前言       熟悉C的程序员都知道union(联合体)的用法,利用union可以用相同的存储空间存储不同型别的数据类型,从而节省内存空间。当访问其内成员时可用”.”和”->”来直接访问。在C++出现后,它继承了union并保留了其在C中的特性。但

winmain的专栏 1522

c++中union的使用

union即为联合,它是一种特殊的类。通过关键字union进行定义,一个union可以有多个数据成员。 在任意时刻,联合中只能有一个数据成员可以有值。当给联合中某个成员赋值之后,该联合中的其它成员就变成未定义状态了。 在C/C++程序的编写中,当多个基本数据类型或复合数据结构要占用同一片内存时,我们要使用联合体;当多种类型,多个对象,多个事物只取其一时(我们姑且通俗地称其为“n 选1”),我们也可以使用联合体来发挥其长处。 union主要是共享内存,分配内存以其最大的结构或对象为大小,即sizeof最大的。

qq_45611002的博客 1万+

C++ 关键字 union

联合(union)是一种特殊类,其所有成员共享同一内存空间,仅能存储一个成员的值。特点包括:默认public权限、可含构造/析构函数、禁止引用成员/继承/虚函数。匿名union可直接访问成员但受限(如全局匿名union需static)。与struct类似,union仅按最大成员分配内存(如含double则占8字节),所有成员起始地址相同。典型应用如StateMachine联合体可存储不同类型数据但同一时刻仅能使用一种。通过共享内存实现空间优化,适用于类型互斥的场景。

人无远虑,必有近忧 1034

C++中的Union

  我们应该按照C中的convention去使用union,这是我这篇文章要给出的观点。虽然C++使得我们可以扩展一些新的东西进去,但是,我建议你不要那样去做,看完这篇文章之后,我想你大概也是这么想的。   C由于没有类的概念,所有类型其实都可以看作是基本类型的组合,因此在union中包含struct也就是一件很自然的事情了,到了C++之后,既然普遍认为C++中的struct与cl...

diaoqu4574的博客 128

c++ union 详解

然而,由于所有成员共享相同的内存空间,使用 union 时需要特别注意,以避免未定义行为。union 是 C++ 中的一种数据结构,允许将不同的数据类型存储在相同的内存位置。这意味着一个 union 变量可以存储其中一个成员的值,但不能同时存储多个成员的值。活跃成员:在任何时间点,union 只能存储一个成员的值。内存共享:union 的所有成员共享同一块内存空间,因此任何一个成员的赋值都会影响其他成员的值。内存大小:union 的大小是其最大成员的大小,因为它需要足够的空间来存储最大的成员。

m0_49133355的博客 1006

C++ union共用体

C与C++中的union:一种数据格式,能够存储不同的数据类型,但只能同时存储其中的一种类型。C++ union结构式一种特殊的类。它能够包含访问权限、成员变量、成员函数(可以包含构造函数和析构函数)。它不能包含虚函数和静态数据变量。它也不能被用作其他类的基类,它本身也不能有从某个基类派生而来。Union中得默认访问权限是public。union类型是共享内存的,以成员最大长度的整数倍作为自己的大...

Shrimp_millet 466

C++Union简析

C++Union简析: 1、什么是联合? 2、联合与结构的区别? 3、如何定义? 4、如何说明? 5、如何使用?

AllKillMan的专栏 713
上一篇: C++智能指针
下一篇: Linux网络编程之socket的各种结构
yu_sh
博客等级 码龄7年 1粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值