数组强制转为结构体 解释下
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;