联合体是什么?

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);

}

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/266731.html

(0)
上一篇 2022年6月7日
下一篇 2022年6月7日

相关推荐

发表回复

登录后才能评论