求指导一个关于指针的题目。。
#include <stdio.h>
int main(void)
{
unsigned int a[3] = {0x01020304, 0x05060708, 0x090a0b0c};
unsigned int *p = (unsigned int *)((int)a +1);
printf("%x/n", *p);
return 0;
}
为什么得到的是08010203 而不是08啊?
编译器怎么识别的啊
[解决办法]
小端序
你这个例子内存低到高字节是:
4 3 2 1, 8, 7, 6 ,5
a+1指向3红色当一个int,在小端序中就是8123
[解决办法]
因为数组地址是连续的。所以它把0x08所在地址的后面三个字节的数据都打印出来了。
[解决办法]
unsigned char *p = (unsigned int *)((int)a +1);