一个小程序,求解答啊

在别人文章里看到的程序
程序的输出结果是什么,why?

#include
int main()
{
int a[5] = {1,2,3,4,5};
int p = (int)(&a + 1);

printf("%d, %d\n", *(a + 1), *(p -1));

}

int a[5] = {1,2,3,4,5};
int* p = (int*)(&a + 1);
printf("%d, %d\n", *(a + 1), *(p -1));

结果2,5

&a + 1 = a + sizeof a / sizeof int
a+1 = a[1]

对 a 取地址,是什么东东呢?数组指针,也是一个指针。它加一是如何操作,请这篇博文:数组指针 与 指针数组
输入是:2 5
我猜的,没有执行它。

这个你没有定义指针,代码不全吧,不能输出

自己下载个eclipse执行下就知道了。

为什么一直报 非法的间接寻址 呢!

看看是不是这样改吧
#include
int main()
{
int a[5] = {1,2,3,4,5};
int p=a+1;
printf("%d,%d\n", *(p+1),
(p-1));
return 0;
}
输出的结果是3,1