c语言中联合体的作用 举例说明

时间:2022-09-05 18:03:29
#include<stdio.h>
#include<stdlib.h>
int main()
{
union a
{
char b;
int c;
};
union a x;
x.b=5;
x.c=4;
printf("%d\n",x.b);
return 0;

}
结果是4
那联合体到底有什么作用呢????

4 个解决方案

#1


有时需要使几种不同类型的变量存放在同一段内存单元中

#2


联合体的所有变量共享一个存储空间,存储空间大小为变量类型的最大字节数,所以赋值4会覆盖掉5

#3


弱类型语言

#4


举个例子,利用union判断Big Endian\Little Endian方法:
static union 

  char c[4]; 
  unsigned long mylong; 

endian_test = {{ 'l', '?', '?', 'b' } };

#define ENDIANNESS ((char)endian_test.mylong)

ENDIANNESS 为 'l' 则为little endian, 为 'b'则表示big endian

#1


有时需要使几种不同类型的变量存放在同一段内存单元中

#2


联合体的所有变量共享一个存储空间,存储空间大小为变量类型的最大字节数,所以赋值4会覆盖掉5

#3


弱类型语言

#4


举个例子,利用union判断Big Endian\Little Endian方法:
static union 

  char c[4]; 
  unsigned long mylong; 

endian_test = {{ 'l', '?', '?', 'b' } };

#define ENDIANNESS ((char)endian_test.mylong)

ENDIANNESS 为 'l' 则为little endian, 为 'b'则表示big endian