首页 > 其他分享 >十五、联合体(union)

十五、联合体(union)

时间:2023-11-23 22:38:19浏览次数:29  
标签:变量 union user 联合体 int 十五 USER

十五、联合体(union)

1、union语法

​ 联合体和结构体都是自定义数据类型 ,通过union可以创建一个联合体,union中的成员变量共享内存(即内存中有重叠的部分),因此union的数据类型大小由其最大的成员变量决定。

//联合体union语法
union 联合体名称
{
    变量类型 变量名称;
    变量类型 变量名称;
};

//示例
union USER        //联合体声明
{
    short sHP;
    int nHP;
};

USER user;       //联合体使用
user.sHP=200;

2、union的特点及使用

①union中任意一个成员变量的变动,都可能导致其他成员变量的值发生变化

②union变量的大小由其最大的成员变量决定

//union的使用
#include <iostream>

union USER        //联合体USER类型的定义
{
    short sHP;
    int nHP;
    double fHP;
};


int main()
{
    USER user;   //声明一个联合体的变量,再没有初始化的情况下,值不好确定
    std::cout << sizeof(user) << std::endl;   //显示的联合体的内存大小由其最大的类型决定
    std::cout << &user.sHP << std::endl; //0113FA68
    std::cout << &user.nHP << std::endl; //联合体的内存地址一致
    std::cout << &user.fHP << std::endl; //0113FA68
    user.sHP = 100;
    std::cout << user.sHP << std::endl;   //只初始化了sHP,所以nHP的值是随机的
    std::cout << user.nHP << std::endl;

    user.nHP = 0;                       //一旦联合体中的某个成员变量值发送变化,那么有可能会影响其他的成员变量也发生变化
    user.sHP = -1;
    std::cout << user.sHP << std::endl;
    std::cout << user.nHP << std::endl;
}
3、匿名联合体和结构体

​ 匿名联合体和结构体即没有名字的联合体和结构体:

//匿名联合体
#include <iostream>

struct MyStruct
{
	union                 //没有类型名称的联合体
	{
		int Mp;
		int Hp;
	} ls;              //使用一个临时变量
} ;
int main()
{
	MyStruct A;
	A.ls.Hp = 200;
	std::cout << A.ls.Hp << std::endl;
}

标签:变量,union,user,联合体,int,十五,USER
From: https://www.cnblogs.com/piaolaipiaoqu/p/17851829.html

相关文章

  • python:第二十五章:range函数
    一,range函数的功能1,语法range(start,stop,step)参数 start:序列的起始值,如果不指定,默认为0。stop:序列的结束值(不包含),必须指定。step:序列的步长,如果不指定,默认为1。返回:一个整数序列,数据类型是:range应用场景:用于循环2,整数序列是从起始值到结束值(不包含结束值本身)的......
  • 信息系统项目管理师 第二十五章-量化的项目管理
    1.量化的项目管理概念809为了项目能准确无误的达成,都必须以量化的数据进行监督和检验。量化项目管理QPM的目的在于量化地管理项目,以达到项目已建立地质量与过程性能目标。量化地管理项目主要工作是使项目得到量化管理.一个适合起步阶段地度量方案。1.生产率2.质量3.规模......
  • 信息系统项目管理师 第十五章-知识管理
    1.知识和知识管理的概念4851.知识与知识管理1.知识的分类显性知识:能以文件与数字来表达,而且已资料、科技法规、特定规格及手册等形式展现者皆属显性知识。隐性知识:技术层面和认知层面。包括一些非正式的个人技巧或技艺。认知层面包括信念、理想、价值、心意与心智模式等。......
  • 第十五天-登录验证&Cookie&Session&验证码安全
    1、后台验证-登录用户逻辑安全2、后台验证-COOKIE&SESSION3、后台验证-验证码&万能密码等登陆验证流程:1.发送登录请求:账号,密码2.接收账号密码3.判断账号密码准确性正确->成功登录,跳转页面失败->跳转到重新登录页面后台管理系统有多个文件页面,为了方便验证,一般会选用cook......
  • 软件开发项目文档系列之十五如何撰写项目结项报告
    这是一个项目总结文档的说明文件,它提供了项目的概述、建设情况、技术情况、测试情况、培训情况、试运行情况、主要成效等详细信息。1项目概述项目名称:明确指定了项目的名称,这有助于确保文件的清晰性和易读性。项目相关单位:明确列出了与项目相关的合作单位,以及它们在项目中的......
  • 代码随想训练营第三十五天打卡(Python)| 860.柠檬水找零、406.根据身高重建队列、452. 用
    860.柠檬水找零classSolution:deflemonadeChange(self,bills:List[int])->bool:five,ten,twenty=0,0,0forbillinbills:ifbill==5:five+=1elifbill==10:iffive......
  • (十五)C#编程基础复习——值传递、引用传递、输出传递
    通过前面的学习,我们了解了在调用带有参数的函数时,需要将参数传递给函数。在介绍这几种传递方式之前,我们先来介绍一下形式参数(形参)和实际参数(实参)这两个概念:形式参数:在定义函数阶段参数列表中定义的参数称之为形式参数,简称形参,可以将它看做变量的名称,它没有具体的值,只是用来接收......
  • C语言——共用体union存储结构与大小端存储模式
    1、大小端存储模式大端:低位数据字节存储在高地址小端:低位数据字节存储在低地址注释:例如int的权重低的8bit,低位指的是00000001000000000000000000000000000000012、共用体union存储结构共用体内每段数据元素从低地址开始存储。注释:数组的每个元素的地址随着索引的增大......
  • 第十五届蓝桥杯模拟赛 -- 删掉m个字符使得字典序最小
    第十五届蓝桥杯模拟赛--删掉m个字符使得字典序最小贪心+单调栈importjava.util.Deque;importjava.util.LinkedList;importjava.util.Scanner;publicclassMain{ publicstaticvoidmain(String[]args){ Scannerscanner=newScanner(System.in); String......
  • SQL union all 不去重
    创建表(牛客sql108改)DROPTABLEIFEXISTS`Products`;CREATETABLEIFNOTEXISTS`Products`(prod_nameVARCHAR(255)NOTNULLCOMMENT'产品名称');INSERTINTO`Products`VALUES('a'),('b'),('c');DROPTABLEIFEXISTS`......