联合体union
当多个数据需要共享内存或者多个数据每次只取其一时,可以利用联合体(union)。在C Programming Language 一书中对于联合体是这么描述的:
1)联合体是一个结构;
2)它的所有成员相对于基地址的偏移量都为0;
3)此结构空间要大到足够容纳最"宽"的成员;
4)其对齐方式要适合其中所有的成员;
下面...
分类:
编程语言 时间:
2015-06-10 08:52:38
阅读次数:
178
联合体的特点
1、联合体是一种结构,在这个结构中可以不同类型的成员,但同一时间只能存放其中的一种。
#include
union Demo
{
int a;
char b;
long long c;
};
int main(){
union Demo demo;
demo.a = 10;
printf("a=%d\n", demo.a);
printf("b=%d\n"...
分类:
其他好文 时间:
2015-06-06 22:06:40
阅读次数:
161
在文章的开头我首先要介绍一下大小端的概念:
大端模式:
是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;
小端模式:
是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值...
分类:
编程语言 时间:
2015-05-17 09:25:37
阅读次数:
185
在C/C++程序的编写中,当多个基本数据类型或复合数据结构要占用同一片内存时,我们要使用联合体;当多种类型,多个对象,多个事物只取其一时(我们姑且通俗地称其为“n 选1”),我们也
可以使用联合体来发挥其长处...
分类:
编程语言 时间:
2015-05-04 18:06:49
阅读次数:
125
l 利用{}进行所有容器和数据结构的就地初始化,还可以直接用于返回值,对自定义类型进行就地初始化使用initializer_list
l 通过右值引用,函数可以自由的返回大对象,同时带资源赋值更加高效,由此指针可在任何情况下退出使用(库除外)
l 全局唯一资源可封装为只可移动不可拷贝语义
l 任何非引用数据都可以成为联合体的成员
l final、override、virtual等...
分类:
编程语言 时间:
2015-04-24 12:38:50
阅读次数:
121
1.结构体2.联合体3.结构体和联合体的操作4.非压缩数组5.压缩数组6.数组操作7.数组foreache 循环8.用于数组的特殊系统函数结构体1.结构体成员可以是任何数据类型 包括基本类型和用户自定义类型2.结构体的声明 var/wire 都可以定义为结构体类型。当定义为结构体类型时,结构体中的成...
分类:
编程语言 时间:
2015-04-06 00:45:56
阅读次数:
210
概述
Lua完全采用8位编码,Lua字符串中的字符可以具有任何数值编码,包括数值0。也就是说,可以将任意二进制数据存储到一个字符串中。Lua的字符串是不可变的值(immutable values)。如果修改,实质上是新建一个字符串。根据《Lua中数据类型的源码实现》中知道,在Lua中,字符串是自动内存管理机制所管理的对象,并且由联合体TString来实现存储字符串值的。下面将通过Lu...
分类:
其他好文 时间:
2015-03-31 22:17:19
阅读次数:
121
前言
boost::any类为我们提供了一个十分强大的功能:只要定义一个any对象,就可以保存任意类型的数据到这个对象中,而且还可以动态改变类型。这比我么在COM中使用到的VARIANT结构要强大多了,VARIANT只不过是用到了一个联合体,把可能出现的类型全部包括进去了,更像是一种穷举,而且还有一个标识来说明当前结构中保存的数据的类型。
如何使用any?
去boost官...
分类:
其他好文 时间:
2015-03-28 21:50:24
阅读次数:
182
不同的cpu存储方式也是不同,我们常见的x86就是小端模式,而有些arm则是大端模式。大小端排序是针对字节之间的排序关系,而字节内部顺序是不变的。小端:低字节排在内存的低地址,高字节排在内存的高地址大端:高字节排在内存的低地址,低字节排在内存的高地址例如:inta=0x123..
分类:
其他好文 时间:
2015-03-17 12:39:26
阅读次数:
302
//若处理器是Big_endian的,则返回0;若是Little_endian的,则返回1
//联合体union的存放顺序是所有成员都从低地址开始存放
//一个联合变量的长度等于各成员中最长的长度。
//应该说明的是,这里所谓的共享不是指把多个成员同时装入一个联合变量内,
//而是指该联合变量可被赋予任一成员值,但每次只能赋一种值,赋入新值则冲去旧值。
int checkCPU( )
{
un...
分类:
其他好文 时间:
2015-03-09 09:22:12
阅读次数:
145