union的读写问题
来源:互联网 发布:数据库管理员要学什么 编辑:程序博客网 时间:2024/05/16 11:04
谈到union这个关键字,相信大家都不陌生,但是对于他的读写方式,原理可能还揣摩的不够,因为这涉及到一些底层的东西,下面我就来帮忙总结一下。
讲到union,就不得不想到struct,首先必须清楚的是,union声明和union变量定义方式都与结构是相似的,形式如下:
union 联合名
{
数据类型 成员名;
数据类型 成员名;
......
}联合变量名;
例如:
union test
{
int mint;
char mchar;
}m_test;
但是底层存储上,联合体和结构体却有天大的区别:结构体里面所有的成员都占用内存,所以结构体的大小等于其有成员大小之和(还要考虑字节对齐);而联合体里面所有的成员公用同一个内存位置,在不同时间保存不同的数据类型和不同长度的变量,但是该联合体的大小等于其成员变量中长度最大的大小。例如:
union test
{
int minteg;
char mchar;
}mtest;
void main()
{
mtest.minteg = 2;
mtest.mchar = 'a';
cout << mtest.minteg << " " << mtest.mchar
<< " " << sizeof(mtest) << endl;
}
输出的结果为 97 a 4;因为最后赋值的是联合体里面的mchar变量,他将覆盖之前的给minteg所赋值,所以打印出来的minteg就是字符a的ASCII码值,而其大小为int的大小。所以对于联合的不同成员赋值, 将会对其它成员重写, 原来成员的值就不存在了, 而对于结构的不同成员赋值是互不影响的。
- union的读写问题
- hive union 的问题
- union 的sizeof()问题
- 有关union的问题
- hive的union问题
- hive union 的问题
- Oracle Union/Union all 的排序问题
- Union Clob字段的问题
- union _ULARGE_INTEGER 的使用问题!
- UNION ALL 的排序问题
- struct、union的对齐问题
- union中使用类对象的问题
- union连接后的数据分页问题
- keil c union 存储的问题
- 关于ORACLE UNION ALL 遇到的问题
- 解决mysql中union排序的问题
- union 和struct的sizeof问题
- 一个简单的内联union问题
- 自启动技术
- 《数据结构与算法(java语言版)第2版 Adam Drozdek著》排序的代码
- RGB排序
- github 配置
- say hello
- union的读写问题
- STM32命名规则
- 小游戏——2048的简易实现
- 程序人生(一)
- android AsyncTask
- 彻底清空SharePoint回收站
- tocmat一闪而过
- window多线程及同步实现
- 选项卡组件和ListView组件结合模拟新浪微博