当前位置: 首页 > ops >正文

C/C++关键字——union

1.介绍

        union是一种特殊的数据类型,它允许你在同一块内存区域中存储不同的数据类型。它的主要目的是节省内存,尤其是在处理多种可能的数据类型,但一次只使用其中一种的场景。

2.特点

        与 struct(结构体)不同,结构体的每个成员都拥有自己独立的内存空间,而联合的所有成员都共享同一段内存。这意味着,你给一个成员赋值,会覆盖其他成员的值(因为它们都使用相同的内存起始地址)。

        一个联合的大小至少等于其最大成员的大小,以确保能容纳下任何一个成员。

3.使用方式

union UnionName {member_type1 member1;member_type2 member2;member_type3 member3;// ...
};

4.例子        

#include <stdio.h>
#include <string.h>union Data {int i;float f;char str[20];
};int main() {union Data data;// 使用整数成员data.i = 10;printf("data.i : %d\n", data.i); // 输出: data.i : 10// 使用浮点数成员 - 这会覆盖 i 的内存data.f = 220.5;printf("data.f : %.2f\n", data.f); // 输出: data.f : 220.50// 此时再读取 data.i 将是无意义的值(是浮点数 220.5 的二进制解释)printf("data.i (after setting f) : %d (nonsense)\n", data.i);// 使用字符数组成员 - 这会覆盖之前所有的内存strcpy(data.str, "C Programming");printf("data.str : %s\n", data.str); // 输出: data.str : C Programming// 此时读取 i 或 f 都将是无意义的值printf("data.i (after setting str) : %d (nonsense)\n", data.i);printf("data.f (after setting str) : %.2f (nonsense)\n", data.f);return 0;
}

        输出结果:

data.i : 10
data.f : 220.50
data.i (after setting f) : 1100006400 (nonsense)
data.str : C Programming
data.i (after setting str) : 1819043147 (nonsense)
data.f (after setting str) : 9129985281638201200000000000000.00 (nonsense)

http://www.xdnf.cn/news/19851.html

相关文章:

  • Python开篇撬动未来的万能钥匙 从入门到架构的全链路指南
  • 《IC验证必看|semaphore与mailbox的核心区别》
  • [从零开始面试算法] (11/100) LeetCode 226. 反转二叉树:递归的“镜像”魔法
  • RabbitMQ学习笔记
  • 找活招工系统源码 雇员雇主小程序 后端JAVA前端uniapp
  • 《云原生深坑实录:让团队卡壳的不是配置,是底层逻辑盲区》
  • 基于扣子平台构造AutoGen框架的多智能体使用-----封装成FastAPI接口供调用
  • JVM:程序计数器
  • 基于Matlab狭窄空间环境中多无人机自重构V字队形方法研究
  • 《清远市市级政务信息化服务项目立项审批细则(试行)》标准解读
  • Jenkins调用Ansible构建LNMP平台
  • 深入探索 WebSocket:构建实时应用的核心技术
  • DarkHole: 2靶场渗透
  • 用 SPL 编写阿里云 FC2.0 函数
  • AntdesignVue 的月份区间组件用法
  • mysql分页SQL
  • Dubbo(分布式RPC调用和分布式文件储存)
  • 深入解析Django重定向机制
  • 2025React面试题集锦
  • Java 与 Docker 的最佳实践
  • wins中怎么用一个bat文件启动jar包和tomcat等多个服务
  • Linux tail 命令使用说明
  • 【C++详解】C++11(四) 包装器:function、bind、STL中⼀些变化
  • 【AI论文】UI-TARS-2技术报告:借助多轮强化学习推进图形用户界面(GUI)智能体发展
  • 20. 云计算-华为云-云服务
  • Linux Centos7搭建LDAP服务(解决设置密码生成密文添加到配置文件配置后输入密码验证报错)
  • 分享星空投影灯方案
  • 高效菜单管理页面:一键增删改查
  • Word 常用快捷键大全:提升文档处理效率的必备技巧​
  • FastGPT源码解析 Agent工作流编排后端详解