好了今天我们来看一下联合
联合(union)与结构(structure)是截然不同的。联合的声明和结构类似,但他的
行为和方式却和结构有很大的不同。联合的所有成员引用的是内存中的同一地址。
这就提示我们在什么时候可以使用联合:当你想在不同的时刻把不同的数据存储到
内存的同一位置的时候就可以使用联合。
Let''''''''s go
float f;
int i;
}fi;
和结构的声明有点类似,我们这样就声明了一个简单的联合,在一个浮点和整型都是
32位的机器上,变量fi只占据内存中的一个32位的字。如果成员f被使用,这个字就
作为浮点值访问;如果成员i被使用,这个字就作为整型值来访问。
我们可以使用如下方法来访问:
fi.f =6.2535;
printf("%d\n",fi.i);
首先把浮点数6.2535存储在fi中,然后以整型值来读取fi中的内容。
注意他们存取的值同一地址,而且二进制内容是相同的,只不过一个
当做浮点类型来解析,而另一个则把它当做整型来解析。所以对于同一个二进制数
得到的结构却是不同的!
联合的初始化
在声明时就可以对联合进行初始化,但需要注意,这个初始值必须是联合第一个成员的类型
而且他必须位于一对花括号里面
For Example:
union {
int a ;
float b;
char c[4];
} x = {5};
这个简单的声明同时将x.a初始化为5
我们是不能在初始化时将他初始化为float或char型的
个人感觉联合主要是用在实现变体记录中,但是好象不是太简单,对着一部分
我也不是太熟悉,在这就简要的给大家介绍这么多,如果大家又需要的话可以
找本书看看当然也可以和我发邮件,我可以给你发一些相关的资料!
在这小孟还是要谢谢大家的支持!