union myun
{
struct { int x; int y; int z; }u;
int k;
}a;
int main()
{
a.u.x =;
a.u.y =;
a.u.z =;
a.k = ;
printf("%d %d %d\n",a.u.x,a.u.y,a.u.z);
return ;
//输出 0,5,6
}
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
 
VS2010亲自试了下,确实如此
#include "stdafx.h"
#include <iostream>
int _tmain(int argc, _TCHAR* argv[])
{
union{
   struct {
  int a;int b;int c;
     }a;
int k;
}b; b.a.a=;
b.a.b=;
b.a.c=;
b.k=;
int aa;
std::cout<<b.a.a<<b.a.b<<b.a.c;
std::cin>>aa;
return ;
  //输出 923
}

最新文章

  1. 搭建nginx+tomcat+Java的负载均衡环境
  2. Linux之Shell脚本计算命令行的所有和
  3. JavaScript DOM高级程序设计 3.6 实例 将HTML代码转换成DOM代码(附源码)--我要坚持到底!
  4. DEDECMS重要文件
  5. poj3264线段数求最大最小值
  6. Jedis分片Sentinel连接池实验
  7. 929. Unique Email Addresses
  8. python3 + flask + sqlalchemy +orm(3):多对多关系
  9. 删除centos7中自带有python2.7
  10. Python之旅Day1 数据类型初识(数字|字符串|列表|数据运算) 编码 表达式(if...else|for|while)
  11. 【转】OpenCV对图片中的RotatedRect进行填充
  12. http://ctf.bugku.com/challenges#%E6%B8%B8%E6%88%8F%E8%BF%87%E5%85%B3--游戏过关
  13. function类型(c++11)
  14. openstack vm ping 114.114.114.114
  15. [C/C++标准库]_[初级]_[转换UTC时间到local本地时间]
  16. MVC使用Dotnet.HighCharts做图表01,区域图表
  17. 经典 MapReduce框架(MRv1)
  18. xpath草稿
  19. QT——在QGraphicsScene中限制图元的拖动范围
  20. 如何用Elasticsearch实现类似SQL中的IN查询实例

热门文章

  1. 在iOS上自动检测内存泄露
  2. View绘制详解(四),谝一谝layout过程
  3. Android 框架修炼-自己封装双缓存管理框架库
  4. JAVA_JSON_example
  5. Linux学习之路:shell变量(二)环境变量
  6. 对springMVC的简单理解
  7. CountDownLatch(闭锁)
  8. (原创)鸟哥linux学习script shell相关笔记
  9. MySQL 에서 root 암호 변경하기
  10. jsp的useBean标签使用