十五、联合体(union)

这篇具有很好参考价值的文章主要介绍了十五、联合体(union)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

十五、联合体(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)文章来源地址https://www.toymoban.com/news/detail-746917.html

到了这里,关于十五、联合体(union)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C语言联合体(Union)在实战中的使用技巧

    联合体(Union)是一种特殊的数据结构,允许在同一内存位置存储不同的数据类型。联合体在实战中可以用于一些特定的场景,具有一些使用技巧,以下是一些常见的实战中使用技巧: 1.节省内存空间: 联合体中的所有成员共享同一块内存空间。如果你有一组相关的数据,但

    2024年01月25日
    浏览(43)
  • 结构体和联合体嵌套访问

    在JSON项目中,使用了联合体和结构体之间的嵌套,但是在访问内部的联合体和结构体的时候出现了问题,这篇文章作为记录,也希望能帮助遇到相同问题的好伙伴。 上面是最原始的代码,上面的代码可以通过下面的代码访问double n和lept_type type, 但是无法访问str结构体内部的

    2024年02月07日
    浏览(39)
  • 自定义类型:结构体、枚举、联合体

    结构体是一种自定义的数据类型,它由多个不同类型的成员变量组成,结构体可以将多个相关的数据打包在一起,方便进行管理和处理。 定义形式: struct 结构体名{ 类型 成员名1; 类型 成员名2; //更多的成员变量 }; 如描述一个学生: struct Stu这样就和int类型一样,都是数

    2024年02月16日
    浏览(41)
  • C语言——自定义类型详解[结构体][枚举][联合体]

    我打算把结构体、枚举、联合体的重点内容总结一下,方便后期复习的时候能够更快,更准确的去拾取遗忘的知识。也希望能给大家起到借鉴的作用,不足的地方,请多多包涵。(不足的地方,也希望大家能够指出来) 结构体是一些值的集合,这些集合称为成员变量,结构体

    2024年02月13日
    浏览(42)
  • 椋鸟C语言笔记#31:结构体(联合体)嵌套、柔性数组

    萌新的学习笔记,写错了恳请斧正。 目录 结构体(联合体)嵌套 嵌套时内嵌结构体(联合体)不创建变量(匿名) 嵌套时内嵌结构体(联合体)创建变量(非匿名) 嵌套初始化 柔性数组 柔性数组的使用 结构体(联合体)嵌套 结构体、联合体可以嵌套,也就是说结构体(

    2024年02月02日
    浏览(44)
  • C/C++之自定义类型(结构体,位段,联合体,枚举)详解

    专栏分类:C语言初阶      C语言程序设计————KTV       C语言小游戏     C语言进阶 C语言刷题 欢迎大家点赞,评论,收藏。 一起努力,一起奔赴大厂。 目录 个人主页:点我进入主页   1.前言 2.结构体 2.1结构体声明 2.2结构体初始化 2.3结构体的自引用 2,4结构体的内存

    2024年02月08日
    浏览(40)
  • C语言中的结构体和联合体有什么区别?

    结构体 是一种用户自定义的数据类型,用于组合不同数据类型的变量,使它们可以作为一个单元一起使用

    2024年02月08日
    浏览(51)
  • C语言中的“三体”大佬们知道是什么吗? —— 结构体、枚举、联合体

    目录 前言 结构体 基本概念 结构体类型的声明 结构的声明 特殊的声明 结构的自引用 结构体变量的定义和初始化 结构体的对齐规则: 为什么要内存对齐 修改默认对齐数 修改默认对齐数的预处理命令 实际例子 结构体传参 结构体实现位段(位段的填充) 位段 什么是位段 位

    2024年02月12日
    浏览(66)
  • C语言学习(三十一)---结构体、联合体的在内存中的存储

    在上一篇文章中,我们学习了 枚举 、 位段 和 联合体 的相关内容,在文章的末尾,我们还差了关于 联合体的存储 问题的内容,今天我们将学习该部分的内容,好了,话不多说,开整!!! 结构体 在内存中是如何存储的呢,是按里面的变量内容,在 内存中的连续地址中存

    2024年02月12日
    浏览(41)
  • 【C语言】一篇文章深入解析联合体和枚举且和结构体的区别

    联合体( union )是允许一个变量通过不同的接口访问内存的一种数据类型,表示一个变量可以存储不同类型的值,而枚举是使用 enum 定义一组相关且互斥的整形常量集合。本章阿森将和你学习联合体类型的声明,特点,有关大小的计算,还有枚举类型的声明,优点和使

    2024年02月03日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包