&a+1 将偏移一个a[5]的大小(即5个int的字节大小)
(注:在题目中a+1与&a+1的偏移量是不一样的)
&(ptr-1)则相当于回到原本a[5]的地址
可以通过以下代码查询地址变化:
希望对你有帮助~~
#include <stdio.h>
int main(void)
{
int a[5]={1,2,3,4,5};
int *ptr=(int *)(&a+1);
printf("%p\n",&a);
printf("%p\n",&a[0]);
printf("%p\n",&a[1]);
printf("%p\n",&a[2]);
printf("%p\n",&a[3]);
printf("%p\n",&a[4]);
printf("%p\n",a);
printf("%p\n\n",a+1);
printf("%d,%d\n",*(a+1),*(ptr-1));
printf("%d,%d",*(a+1),*ptr-1);
return 0;
} |