首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

c++ 结构体中有联合体 什么意思啊解决方法

2012-06-13 
c++结构体中有联合体什么意思啊?typedef struct tagWord16{union{__int16v16__int8v8[2]}} Word16请各

c++ 结构体中有联合体 什么意思啊?
typedef struct tagWord16
{
union
{
__int16v16;
__int8v8[2];
};
} Word16;

请各位高手赐教

[解决办法]
typedef struct tagWord16
{
 union
 {
 __int16 v16;
 __int8 v8[2];
 };
} Word16;

Word16是一个结构体,可以用于存储双字节数据或者变量,结构内部包含了
union
 {
 __int16 v16;
 __int8 v8[2];
 };
这个,使得这个结构功能变得更强大,可以很方便的处理双字节的单独低字节部分或者高字节部分或者整个双字节。
Word16 w;
w.v16=0x1122;
printf("%x\n",w.v16);

printf("%x\n",w.v8[0]);
printf("%x\n",w.v8[1]);
我的机器运行结果是
0x1122
0x22
0x11
从我的机器运行结构也可以看出,我的计算机的结构式little-end
[解决办法]
不过,对于不同的系统,有字节前后问题,也就是v8[0]可能是v16中的高字节,也可能是低字节。

探讨
首先,你的结构体是16位的。其内部使用了union,那么这个union的内部成员共享16位空间。uinon分为两个部分,
union
{
__int16 v16;
__int8 v8[2];
};
即方便处理16位的,也方便处理8位的。

热点排行