c++中union的使用
union即为联合,它是一种特殊的类。通过关键字union进行定义,一个union可以有多个数据成员。
在任意时刻,联合中只能有一个数据成员可以有值。当给联合中某个成员赋值之后,该联合中的其它成员就变成未定义状态了。
在C/C++程序的编写中,当多个基本数据类型或复合数据结构要占用同一片内存时,我们要使用联合体;当多种类型,多个对象,多个事物只取其一时(我们姑且通俗地称其为“n 选1”),我们也可以使用联合体来发挥其长处。
union主要是共享内存,分配内存以其最大的结构或对象为大小,即sizeof最大的。
union myun
{struct { int x; int y; int z; }u;
int k;
}a;
int main()
{
a.u.x =4;
a.u.y =5;
a.u.z =6;
a.k = 0;
printf("%d %d %d\n",a.u.x,a.u.y,a.u.z);
return 0;
}
由于union类型是共享内存,以size最大的结构作为自己的大小,这样的话,myun这个结构就包含u这个结构体,而大小也等于u这个结构体 的大小,在内存中的排列为声明的顺序x,y,z从低到高,然后赋值的时候,在内存中,就是x的位置放置4,y的位置放置5,z的位置放置6,现在对k赋 值,对k的赋值因为是union,要共享内存,所以从union的首地址开始放置,首地址开始的位置其实是x的位置,这样原来内存中x的位置就被k所赋的值代替了,就变为0了,这个时候要进行打印,就直接看内存里就行了,x的位置也就是k的位置是0,而y,z的位置的值没有改变,所以应该是0,5,6。
大部分转载来自: http://www.cnblogs.com/xdotnet/archive/2011/04/20/cpp_union.html
c++中union的使用相关推荐
- mysql join union_MySQL中union和join语句使用区别的辨析教程
union和join是需要联合多张表时常见的关联词,具体概念我就不说了,想知道上网查就行,因为我也记不准确. 先说差别:union对两张表的操作是合并数据条数,等于是纵向的,要求是两张表字段必须是相同 ...
- mysql union order_MySQL中union和order by同时使用的实现方法
MySQL中union和order by是可以一起使用的,但是在使用中需要注意一些小问题,下面通过例子来说明.首先看下面的t1表. 1.如果直接用如下sql语句是会报错:Incorrect usage ...
- mysql不支持union_MySQL中Union子句不支持order by的解决方法
本文实例讲述了MySQL中Union子句不支持order by的解决方法.分享给大家供大家参考,具体如下: 我对DB知之甚少,这问题只在MySQL遇到,不知道别的DBMS是不是也如此. 问题是这样的, ...
- mysql中union 查询
mysql中union 查询 UNION ALL只是简单的将两个结果合并后就返回.这样,如果返回的两个结果集中有重复的数据,那么返回的结果集就会包含重复的数据了. 从效率上说,UNION ALL 要比 ...
- mysql union 不同字段_mysql中union和union all的区别和注意点
mysql中union和union all的区别和注意点 昨天有个功能要实现排行效果,而且是随机按照某些字段的总值,但是第一个又要不一样,因为第一个人给了钱,所以要排第一. 打个比方吧,表(useri ...
- SQL中 UNION 和 UNION ALL 操作符小结
SQL中 UNION 和 UNION ALL 操作符小结1.UNION 和 UNION ALL 操作符用于合并两个或多个 SELECT 语句的结果集[适用场景] 2.UNION 和 UNION ALL ...
- mySql中union all 及max,ifnull用法
mySql中union all 及max,ifnull用法 selectifnull(max(d.orderNum),0) totalNum,ifnull(max(d.money),0) totalM ...
- mysql得union使用方法_mysql中Union All使用方法
在mysql数据库使用UNION 时,会把结果集中重复的记录删掉,也正因为做了去重操作,所以效率相对Union All来讲稍微低一点,使用UNION ALL ,MySQL 会把所有的记录返回,效率高于 ...
- oracle union详解,oracle union用法 oracle中union的用法
oracle中union的用法 只知道是用来左联接的,还有类似union all,谁有这个例子,要解释详细一点的一生中要有两次冲动,一次奋不顾身的爱情,一次为说走就走的旅行. UNION 指令的目的是 ...
- mysql union如何排序_Mysql中UNION用法与排序
最近也是在写项目中碰到的这个问题,需要将两个SELECT查询结果组合起来进行分组排序,想到了用union方法,用TP的union操作根本无法完成复杂的union操作,于是搜罗了一下,先说一下union ...
最新文章
- C++数组名做函数形参/指针
- resin-pro-4.0.34 服務器在windows环境下的配置
- Linux操作系统中内存buffer和cache的区别
- Windows下nginx-http-flv-module服务部署
- 如何给DPM服务器附加磁盘?
- python decode()函数 (使用登记用于编码的编解码器解码字节)
- 工厂模式和抽象工厂模式的区别
- 近业务=困死在一条船上?
- Linux内存管理:分页
- js base64图片太大_手把手教你常用JS方法封装(一) [ 大杂烩 ]
- brew切换到清华源
- 转:著名的100个管理定律点评1 -- 管人用人育人留人之道
- html css表格制作,CSS 表格(Table)
- makefile往tcl中传递参数
- vue 项目中使 实现粒子动态 背景图
- loadrunner入门教程(11)--回放脚本
- NSS 错误码详细信息
- bxl类型封装怎么转换为AD库封装
- ethereum-etl学习3
- C# 自制OCR获取图片中的电子数字