c/c++ union
来源:互联网 发布:excel数据统计图表 编辑:程序博客网 时间:2024/06/07 02:19
一、概念
中文称为共用体或联合体。主要用于共享内存,在C/C++程序的编写中,当多个基本数据类型或复合数据结构要占用同一片内存时,我们要使用联合体;当多种类型,多个对象,多个事物只取其一时(我们姑且通俗地称其为“n 选1”),我们也可以使用联合体来发挥其长处。
在“联合”中,各成员共享一段内存空间,一个联合变量的长度等于各成员中最长的长度。应该说明的是, 这里所谓的共享不是指把多个成员同时装入一个联合变量内, 而是指该联合变量可被赋予任一成员值,但每次只能赋一种值, 赋入新值则冲去旧值。
二、举例
(1)用union判断大小端
union var{
char c[4];
int i;
};
int main(){
var data;
data.c[0] = 0x04;
data.c[1] = 0x03;
data.c[2] = 0x02;
data.c[3] = 0x11;
//数组中下标低的,地址也低,按地址从低到高,内存内容依次为:04,03,02,11。总共四字节!
//而把四个字节作为一个整体,应该从内存高地址到低地址看,0x11020304,低位04放在低地址上。
printf("%x\n",data.i);
}
结果:
11020304 //证明是小端(little-endian)
(2)含有struct的union
#include <stdio.h>
void main()
{
union number
{
int i;
struct
{
char first;
char second;
}half;
}num;
num.i=0x4241; /*联合成员赋值*/
printf("%c%c/n", num.half.first, num.half.second);
num.half.first='a'; /*联合中结构成员赋值*/
num.half.second='b';
printf("%x/n", num.i);
}
输出结果为:
AB
6261
三、带对象的union
- c union
- c union
- c++union
- union[c++] in gamedev
- 关于C中的 Union
- c语言 union
- c union & struct
- C语言联合体union
- C语言 union
- union in C
- C++Union的用法
- C/C++ union用法
- c 联合 union
- C语言union关键字
- C语言联合体union
- C/C++ union用法
- C 语言Union用法
- c语言 union 联合体
- poj 3928树状数组
- POPWindow的使用技巧盲点
- [转]解决每次从cmd进入sqlplus,都得重新设置pagesize、linesize的问题
- 链表简单创建查找
- 浅谈ORACLE AWR single instance 一
- c/c++ union
- Day005: linked list cycle
- 用android studio创建手机用户界面
- Linux安装JDK详细步骤
- xml
- visio 2016 图 保存为无白边pdf
- KMP——CODEVS1204 寻找子串位置
- fullcalendar + bootstrap
- cocos2dx 3.2 裁剪节点 ClippingNode