联合体是什么?

union类型与struct类型类似,只是所有字段共享相同的内存位置。union的大小是它包含的最大字段的大小。下面的代码中创建一个联合体类型,大小为4个字节。

编程学习网为您整理以下代码实例,主要实现:联合体是什么?,希望可以帮到各位朋友。

union类型与struct类型类似,只是所有字段共享相同的内存位置。union的大小是它包含的最大字段的大小。
下面的代码中创建一个联合体类型,大小为4个字节。

union mix {
  char c;  /* 1 byte */
  short s; /* 2 bytes */
  int i;   /* 4 bytes */
};

由于内存是共享的,因此union类型一次只能存储一个值。更改一个字段将覆盖其他字段的值。

#include <stdio.h>
union mix {
  char c;  /* 1 byte */
  short s; /* 2 bytes */
  int i;   /* 4 bytes */
};

int main(voID) {
  union mix m;

  printf("%d\n",m.c);
  printf("%d\n",m.s);

  m.c = 0xFF; /* set first 8 bits */

  printf("%d\n",m.c);
  printf("%d\n",m.s);


  m.s = 0;    /* reset first 16 bits */

  printf("%d\n",m.c);
  printf("%d\n",m.s);
}

union提供了多种使用相同内存位置的方法。

示例代码 :

#include <stdio.h>
union mix {//
  char c[4];                  /* 4 bytes */
  struct { short hi, lo; } s; /* 4 bytes */
  int i;                      /* 4 bytes */
} m;


int main(voID) {
  union mix m;

    m.i=0xFF00F00F; //11111111 00000000 11110000 00001111
    m.s.lo;         //11111111 00000000                   
    m.s.hi;         //                  11110000 00001111 
    m.c[3];         //11111111                            
    m.c[2];         //         00000000                   
    m.c[1];         //                  11110000          
    m.c[0];         //                           00001111 

    printf("%d\n",m.i);
    printf("%d\n",m.s.lo);

}
本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐