#include<stdio.h>
int main()
{
int a[4]={1,2,3,4};
int *p=(int *)(&a+1);
printf("%d",*(p-1));
return 0;
}
答案是4,原因在于&a扫过了整个数组,而不是取数组首地址。如果改成以下形式:
#include<stdio.h>
int main()
{
int a[4]={1,2,3,4};
int *p=(int *)(a+1);
printf("%d",*(p-1));
return 0;
}
则结果为1。