例1
int main()
{
int a[5] = { 1, 2, 3, 4, 5 };
int *ptr = (int *)(&a + 1);
printf("%d %d\n", *(a + 1), *(ptr - 1));
system("pause");
return 0;
}
程序结果:2 5
分析:数组名在sizeof内部单独出现和&(数组名)这两种情况下,数组名表示整个数组。
其他情况下,数组名均表示首元素的地址。
所以这里的(a+1)的a表示首元素的地址,+1表示下一个元素的地址,解引用表示下一个下一个元素2.
(&a+1)对a取地址,取得是首元素的地址,+1是指向下一个数组的起始地址。所以ptr-1指向该数组的在最后一个元素,解引用表示该元素5.
这里区分一下:
&#x