int a[] = {1,2,3,4,5};
int *ptr = (int *)(&a + 1);
cout << *(a+1) << endl << *(ptr-1) << endl;
运行结果为:2 5
注意第二行,取数组a的地址,之后加1,(&a + 1); 指针移动一个数组的大小的距离,实际上指向了超出数组a末尾元素的位置。
int a[] = {1,2,3,4,5};
int *ptr = (int *)(&a + 1);
cout << *(a+1) << endl << *(ptr-1) << endl;
运行结果为:2 5
注意第二行,取数组a的地址,之后加1,(&a + 1); 指针移动一个数组的大小的距离,实际上指向了超出数组a末尾元素的位置。
转载于:https://www.cnblogs.com/younes/archive/2010/06/21/1762038.html