代码如下:
#include <stdio.h>
int main(void) {
int a[5] = {1, 2, 3, 4, 5);
int *pstr1 = (int*)(&a + 1);
int *pstr2 = (int*)((int)a + 1);
printf("%x, %x\n", pstr1[-1], *pstr2);
return 0;
}
输出结果为:
5, 20000000
5可以明白怎么得到的,但是为什么会出现20 00 00 00?请看图!(地址为小端到大端)