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的使用相关推荐

  1. mysql join union_MySQL中union和join语句使用区别的辨析教程

    union和join是需要联合多张表时常见的关联词,具体概念我就不说了,想知道上网查就行,因为我也记不准确. 先说差别:union对两张表的操作是合并数据条数,等于是纵向的,要求是两张表字段必须是相同 ...

  2. mysql union order_MySQL中union和order by同时使用的实现方法

    MySQL中union和order by是可以一起使用的,但是在使用中需要注意一些小问题,下面通过例子来说明.首先看下面的t1表. 1.如果直接用如下sql语句是会报错:Incorrect usage ...

  3. mysql不支持union_MySQL中Union子句不支持order by的解决方法

    本文实例讲述了MySQL中Union子句不支持order by的解决方法.分享给大家供大家参考,具体如下: 我对DB知之甚少,这问题只在MySQL遇到,不知道别的DBMS是不是也如此. 问题是这样的, ...

  4. mysql中union 查询

    mysql中union 查询 UNION ALL只是简单的将两个结果合并后就返回.这样,如果返回的两个结果集中有重复的数据,那么返回的结果集就会包含重复的数据了. 从效率上说,UNION ALL 要比 ...

  5. mysql union 不同字段_mysql中union和union all的区别和注意点

    mysql中union和union all的区别和注意点 昨天有个功能要实现排行效果,而且是随机按照某些字段的总值,但是第一个又要不一样,因为第一个人给了钱,所以要排第一. 打个比方吧,表(useri ...

  6. SQL中 UNION 和 UNION ALL 操作符小结

    SQL中 UNION 和 UNION ALL 操作符小结1.UNION 和 UNION ALL 操作符用于合并两个或多个 SELECT 语句的结果集[适用场景] 2.UNION 和 UNION ALL ...

  7. mySql中union all 及max,ifnull用法

    mySql中union all 及max,ifnull用法 selectifnull(max(d.orderNum),0) totalNum,ifnull(max(d.money),0) totalM ...

  8. mysql得union使用方法_mysql中Union All使用方法

    在mysql数据库使用UNION 时,会把结果集中重复的记录删掉,也正因为做了去重操作,所以效率相对Union All来讲稍微低一点,使用UNION ALL ,MySQL 会把所有的记录返回,效率高于 ...

  9. oracle union详解,oracle union用法 oracle中union的用法

    oracle中union的用法 只知道是用来左联接的,还有类似union all,谁有这个例子,要解释详细一点的一生中要有两次冲动,一次奋不顾身的爱情,一次为说走就走的旅行. UNION 指令的目的是 ...

  10. mysql union如何排序_Mysql中UNION用法与排序

    最近也是在写项目中碰到的这个问题,需要将两个SELECT查询结果组合起来进行分组排序,想到了用union方法,用TP的union操作根本无法完成复杂的union操作,于是搜罗了一下,先说一下union ...

最新文章

  1. C++数组名做函数形参/指针
  2. resin-pro-4.0.34 服務器在windows环境下的配置
  3. Linux操作系统中内存buffer和cache的区别
  4. Windows下nginx-http-flv-module服务部署
  5. 如何给DPM服务器附加磁盘?
  6. python decode()函数 (使用登记用于编码的编解码器解码字节)
  7. 工厂模式和抽象工厂模式的区别
  8. 近业务=困死在一条船上?
  9. Linux内存管理:分页
  10. js base64图片太大_手把手教你常用JS方法封装(一) [ 大杂烩 ]
  11. brew切换到清华源
  12. 转:著名的100个管理定律点评1 -- 管人用人育人留人之道
  13. html css表格制作,CSS 表格(Table)
  14. makefile往tcl中传递参数
  15. vue 项目中使 实现粒子动态 背景图
  16. loadrunner入门教程(11)--回放脚本
  17. NSS 错误码详细信息
  18. bxl类型封装怎么转换为AD库封装
  19. ethereum-etl学习3
  20. C# 自制OCR获取图片中的电子数字

热门文章

  1. linux superblock位置,Linux下恢复EXT3 Superblock的正确方法
  2. github从入门到上传项目
  3. 设置多行 TextBox 滚动条位置
  4. 启悦高速公路噪音测试软件,提了启悦一段时间,车主把真实的用车感受和优缺点分享出来!...
  5. ROS基础一之ROS常用指令集合
  6. 超强的色彩和构图,丹麦插画家 Rune Fisker 作品
  7. 女性创业家的“自白”
  8. vector 力扣 682 棒球比赛
  9. 电脑c盘哪些文件可以删除
  10. 【头歌】抓取并筛选分组(计算机网络)