// union内嵌struct用法
// 众所周知,union为联合体,struct为结构体。下面根据实例谈谈用法
#include <stdio.h>
#include <string.h>
void main()
{
union{
char i[6];
struct{
char first;
char second;
char third;
char fourth;
unsigned short five;
}half;
}number;
strcpy(number.i,"abcdA");
printf("%c%c
",number.half.first, number.half.second);
printf("%c%c%d
",number.half.third, number.half.fourth,number.half.five);
}
// 输出结果为:
// union中各个变量是共用内存空间。上例中,char数组和结构体共用内存空间。正如程序输出结果
// char数组赋值,结构体中的变量就会按顺序获得数组中的值。
main()
{
union{
int i;
struct{
char first;
char second;
char third;
char fourth;
}half;
}number;
number.i=0x44434241;
printf("%c%c%c%c
", number.half.first,number.half.second,number.half.third, number.half.fourth);
number.half.first='a';
number.half.second='b';
number.half.third='c';
number.half.fourth='d';
printf("%x
", number.i);
}
// 输出结果为:
// 从上例结果可以看出: 当给i赋值后, first,second,third,fourth也就相应被赋值;
// 当给first,second,third,fourth赋字符后, 这四个字符的ASCII码也被赋值给i。
|