偶然间看到这样一个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