众所周知,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/n",number.half.first, number.half.second);
- printf("%c%c%d/n",number.half.third, number.half.fourth,number.half.five);
- }
union中各个变量是共用内存空间。上例中,char数组和结构体共用内存空间。正如程序输出结果
ab
cd65
char数组赋值,结构体中的变量就会按顺序获得数组中的值。
- main()
- {
- union{
- int i;
- struct{
- char first;
- char second;
- }half;
- }number;
- number.i=0x4241;
- printf("%c%c/n", number.half.first, mumber.half.second);
- number.half.first='a';
- number.half.second='b';
- printf("%x/n", number.i);
- getch();
- }
输出结果为:
AB
6261
从上例结果可以看出: 当给i赋值后, 其低八位也就是first和second的值;
当给first和second赋字符后, 这两个字符的ASCII码也将作为i 的低八位和高八
位。