一、结构体和共用体的区别

1. struct和union都是由多个不同的数据类型成员组成,但在任何同一时刻, union中只存放了一个被选中的成员,而struct的所有成员都存在。在struct中,各成员都占有自己的内存空间,它们是同时存在的。一个struct变量的总长度等于所有成员长度之和。在Union中,所有成员不能同时占用它的内存空间,它们不能同时存在。Union变量的长度等于最长的成员的长度。

2.对于union的不同成员赋值,将会对其它成员重写,原来成员的值就不存在了,而对于struct的不同成员赋值是互不影响的。

二、来一段结构体和共用体的组合使用小程序

#include<stdio.h>#include<stdlib.h>typedefstruct_ColorARGB{unsignedshortintalpha;unsignedshortintred;unsignedshortintgreen;unsignedshortintblue;}ColorARGB;typedefunion_Color{unsignedlongintcolor;ColorARGBcolorArgb;}Color;intmain(void){Colorc;c.color=0xFFFEED2B12345678;printf("%d%d\n",sizeof(c.colorArgb.red),sizeof(c.color));printf("red=0x%X\n",c.colorArgb.red);printf("green=0x%Xblue=0x%X\n",c.colorArgb.green,c.colorArgb.blue);return0;}

运行结果:

2 8

red=0x1234

green=0xED2B blue=0xFFFE