#include <stdio.h> int main() { int a[5]={7,8,9,10,11}; int *ptr1=(int *)(&a+1); int *ptr2=(int *)((int )a+1); printf("%x,%x",ptr1[-1],*ptr2); return 0; } 结果为:b,8000 即:&a+1取得是a[5]之后的地址,(int)a+1都要从逻辑上考虑