#include <stdio.h>
int main()
{
int a[] = {1,2,3,4,5};
int *p1 = &a;
int *p2 = (int *)(&a +1);
int *p3 = p2-1;
int *p4 =&a[4];
printf("p1 = %p\np2 = %p\np3 = %p\np4 = %p",p1,p2,p3,p4);
return 0;
}
输出结果为
为什么p3的值等于p4,而不等于p1
注:有些编译器 int *p1 = &a;可能会报错