联合体 union
来源:互联网 发布:欧陆风云4 mac 下载 编辑:程序博客网 时间:2024/06/01 18:55
union un{ struct { int x; int y; int z; }s;//s总共48位 int k;}u;//u 48位int main(){ u.s.x=4; u.s.y=5; u.s.z=6; u.k=0; printf("%d %d %d %d \n",u.s.x,u.s.y,u.s.z,u.k); return 0;}
结果:u.s.x=0; u.s.y=5; u.s.z=6; u.k=0;
union类型是共享内存的,以size最大的结构作为自己的大小,这样的话,un这个结构就包含s这个结构体,而大小也等于s这个结构体的大小,在内存中的排列为声明的顺序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
main() { union { int i; struct { char first; char second; }half; }number; //i=16位;half=16位,其中first是低8位,second是高8位 number.i=0x4241; //ascii码 42-B,41-A printf("%c%cn", number.half.first, number.half.second); number.half.first='a'; number.half.second='b'; printf("%xn", number.i); //ascii码 62-b,61-a getch(); }
结果:
AB
6261
0 0
- 联合体union
- 联合体union
- union联合体
- 联合体union
- 联合体union
- 联合体union
- 联合体union
- 联合体union
- 联合体 union
- union联合体的妙用
- union 联合体的测试
- C语言联合体union
- 联合体union的用法
- 关于Union 联合体
- union 共用体 联合体
- 关于UNION联合体
- C语言联合体union
- c语言 union 联合体
- WSGI接口
- CodeForces 9C Hexadecimal's Numbers(DFS)
- BZOJ 2028|SHOI 2009|会场预约|平衡树
- wincmd for windows
- Java的String char()[待补充]
- 联合体 union
- 【014】【JVM中的两个Survivor区】
- Qt播放WAV格式音频文件的两种方法
- [BZOJ4518][Sdoi2016]征途(斜率优化dp)
- 练习2————1015
- NYOJ 523 亡命逃窜(三维BFS)
- 浏览器插件之ActiveX开发 资料收集
- 一步步教你安装hadoop
- 算是内心独白吧!