联合几乎与结构体完全一致,只有两点不一样的地方。一是声明关键字不同,二是联合中成员共享内存空间。
例如以下代码:
#include<stdio.h>
void main(void)
{
typedef union
{
int number;
char name[4];
}student;
student student0;
student0.number=343;
for (size_t i = 0; i < 4; i++)
{
printf("name[%d]=%d\n",i,student0.name[i]);
}
}
运行结果为:
name[0]=87
name[1]=1
name[2]=0
name[3]=0
就利用了unio成员共享空间的特性,将其成员int的每一个字节,用char name[]读了出来。