联合体的概念
#include <stdio.h>
union un
{
int i;
short int si[2];
char c[4];
};
int main()
{
union un x;
x.c[0]='A';
x.c[1]='B';
x.c[2]='C';
x.c[3]='D';
printf("%c, %c, %c, %c\n", x.c[0], x.c[1], x.c[2], x.c[3]);
printf("%d, %d\n", x.si[0], x.si[1]);
printf("%d\n", x.i);
return 0;
}
应用:IP的表示
#include <stdio.h>
union IP
{
unsigned char part[4];
unsigned int address;
};
void copyIp(union IP *a, int n[])
{
int i;
for(i=0; i<4; i++)
a->part[i]=n[i];
return;
}
int main()
{
union IP ip1, ip2;
int nums[4]= {202,194,116,97};
copyIp(&ip1, nums);
printf("ip1: %d.%d.%d.%d\n", ip1.part[0], ip1.part[1], ip1.part[2], ip1.part[3]);
printf("ip1: %d\n", ip1.address);
ip2.address=234567;
printf("ip2: %d.%d.%d.%d\n", ip2.part[0], ip2.part[1], ip2.part[2], ip2.part[3]);
printf("ip2: %d\n", ip2.address);
if(ip1.address == ip2.address)
printf("same ip.\n");
else
printf("not same ip.\n");
return 0;
}