下面代码段的输出是多少?
int a[] = {1, 2, 3, 4, 5};
int *p = (int *)(&a+1);
printf("%d, %d\n", *(a+1), *(p-1));
下面代码段的输出是多少?
int a[] = {1, 2, 3, 4, 5};
int *p = (int *)(&a+1);
printf("%d, %d\n", *(a+1), *(p-1));
这里的重点是&a+1的结果,因为a是数组,所以&a相当于一个二维数组的行指针,加1后指向a数组尾部的下一个字节。所以 * (p-1)就是a数组的最后一个元素,即5。而 * (a+1)显然就是2