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

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

2013-03-22 
数组强制转为结构体 解释下int ch[] {0x12, 0x34, 0x56, 0x78}struct arr{int i,j}void main(){arr*

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

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;

热点排行