#include <iostream>
using namespace std;
int main()
{
int a[5] = {1,2,3,4,5};
int *ptr = (int *) (&a+1);
cout << *(a+1) << endl;
cout << *(ptr-1) << endl;
return 0;
}
(&a+1)中&a 是表示数组的地址,进行+1,相当于地址+1*(sizeof(a)),即指向数组末的尾地址(可理解为下个数组的首地址^-^)
(int *)(&a+1) 是将int(*)[5]强转成int *,好赋给int * ptr(ptr是个指向普通整型变量的指针)
(ptr-1) ptr是一个指向整型的普通指针,所以-1操作相当于地址-1*(sizeof(int))
a+1 a是数组的首元素的地址,+1相当于a[1]的地址
SO:*(a+1) : 2
*(ptr-1): 5