union内嵌struct用法 | 您所在的位置:网站首页 › union定义的是什么 › union内嵌struct用法 |
众所周知,union为联合体,struct为结构体。下面根据实例谈谈用法 #include #include 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 的低八位和高八 位。 参考文献 http://blog.ednchina.com/likee/20666/message.aspx |
CopyRight 2018-2019 实验室设备网 版权所有 |