在x86平台下,分析以下代码的输出结果:
#include <stdio.h>
int main(void)
{
int a[4] = {1, 2, 3, 4};
int *ptr1=(int *)(&a+1);
int *ptr2=(int *)((int)a+1);
printf("%x, %x\n", ptr1[-1], *ptr2);
return 0;
}
输出结果:
4,2000000
在x86平台下,分析以下代码的输出结果:
#include <stdio.h>
int main(void)
{
int a[4] = {1, 2, 3, 4};
int *ptr1=(int *)(&a+1);
int *ptr2=(int *)((int)a+1);
printf("%x, %x\n", ptr1[-1], *ptr2);
return 0;
}
输出结果:
4,2000000