萌导航

9.6C语言共用体(共同体)

作者: 不爱洗头发 来源: 怪哈哈网 日期: 2015-09-29 10:20:24 人气: -

共用体(共同体)的定义和结构体类似,不过结构体的各个成员都会分配相应的内存空间,而共用体的所有成员共享一段内存,它们的起始地址一样,并且同一时刻只能使用其中的一个成员变量。

共用体在实际开发中应用较少,你可以暂时跳过,需要时再来温习。

共用体定义的一般格式为:

union 共用体名{
    成员列表
};

例如:

  1. //先定义共用体,再定义变量
  2. union data{
  3. int i;
  4. char ch;
  5. };
  6. data a, b, c;

或者:

  1. //定义共用体的同时定义变量
  2. union data{
  3. int i;
  4. char ch;
  5. } a, b, c;

共用体所占用的内存空间大小等于最长的成员所占用的字节数。共用体使用了覆盖技术,几个成员变量相互覆盖,从而使几个不同变量共占同一段内存。这也就意味 着,同一时刻只能存放一个成员变量的值,只能有一个成员存在,不可能像结构体一样同时存放。如果对新的成员变量赋值,就会把原来成员变量的值覆盖掉。

共用体 data 中,成员 i 所占用的空间最大,为 4 个字节,所以 data 类型的变量(也就是a、b、c)也占用4个字节的内存。请看下面的例子:

  1. #include <stdio.h>

  2. union{
  3. int i;
  4. char c;
  5. }a;

  6. int main(){
  7. printf("Size of a: %d\n", sizeof(a));
  8. a.c='A';  //此时共用体变量4个字节的取值情况为0x00000041
  9. printf("a.i = %d\n",a.i);
  10. a.i=0x42;  //0x42为字母B的ASCII码
  11. printf("a.c = %c\n",a.c);
  12. return 0;
  13. }

运行结果:
Size of a: 4
a.i = 65
a.c = B

两个不能:不能使用共用体变量,只能引用共用体变量中的成员。不能在定义共用体变量时进行初始化。


转载请注明文章来源(欢迎分享): http://www.guaihaha.com/c/5630.html

相关内容

HTML5游戏 HTML5游戏
关于怪哈哈
怪哈哈是一个集搞笑,美女,动漫,游戏,技术等为核心的综合性网站!
联系我们
商务洽谈、广告合作、友情链接、侵权举报,这些都可以联系我们哦!
关于我们 - 联系我们 - 广告服务 - 免责申明  
本站文字和图片均为严格审查筛选收藏,均收集整理于互联网,其著作权归原作者所有,如果有侵犯您权利的照片,请来信告知,我们将及时撤销相应文字和图片。
Copyright @2014-2020 怪哈哈网 All Rights Reserved。
【谢谢大家一直支持贵站!】