读书人

数组强制转为结构体 解释上

发布时间: 2013-03-22 09:49:50 作者: rapoo

数组强制转为结构体 解释下

int ch[] = {0x12, 0x34, 0x56, 0x78};
struct arr
{
int i,j;
};

void main()
{
arr* a = (arr*)ch;
cout<<a->i<<endl<<a->j<<endl;
}

为什么输出18 52
[解决办法]
16进制的 12 = 10进制的18
16进制的 34 = 10进制的52
[解决办法]

引用:
你不应这么直接强制转换的方式来访问,而是明确的给结构体赋值


++

结构体会有对齐,

导致出现的结果是预想不到的。

尤其是你点结构体之间插入了一些空白的时候

[解决办法]
arr* a = (arr*)ch;
cout<<a->i<<endl<<a->j<<endl;
a++;
cout<<a->i<<endl<<a->j<<endl;
return 0;

读书人网 >VC/MFC

热点推荐