偶然间看到这样一个c语言题目:小端模式
int main(void)
{
int a[5]={1,2,3,4,5};
int *p=(int *)((int)a+1);
printf("%#X\r\n",*p);
return 0;
}
下面是我对这道题目的一些看法,如有错误请指出:
(int)a+1的意思是把 a 由 地址 转换成 地址值,在c语言中地址值加1,表示地址往前1个字节,所以当其转换成(int *)时,指针p存储的地址值是a的地址往前移了1个字节。*p就是取p地址后的4个字节。
如图:
所以得到的结果为:0x2 00 00 00
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)