正文
union内嵌struct用法
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
// 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\n",number.half.first, number.half.second); printf("%c%c%d\n",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\n", 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\n", number.i); } // 输出结果为: // 从上例结果可以看出: 当给i赋值后, first,second,third,fourth也就相应被赋值; // 当给first,second,third,fourth赋字符后, 这四个字符的ASCII码也被赋值给i。 |