现在的位置: 首页 > 综合 > 正文

联合–C编程

2017年08月25日 ⁄ 综合 ⁄ 共 771字 ⁄ 字号 评论关闭

好了今天我们来看一下联合

联合(union)与结构(structure)是截然不同的。联合的声明和结构类似,但他的
行为和方式却和结构有很大的不同。联合的所有成员引用的是内存中的同一地址。
这就提示我们在什么时候可以使用联合:当你想在不同的时刻把不同的数据存储到
内存的同一位置的时候就可以使用联合
Let''''''''s go

 union {
  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型的
  
 个人感觉联合主要是用在实现变体记录中,但是好象不是太简单,对着一部分
 我也不是太熟悉,在这就简要的给大家介绍这么多,如果大家又需要的话可以
 找本书看看当然也可以和我发邮件,我可以给你发一些相关的资料!
 
 在这小孟还是要谢谢大家的支持!

抱歉!评论已关闭.