65,187
社区成员




[code=c]
#include <iostream>
using namespace std;
int main()
{
int array[5] = {1,2,3,4,5};
/*
int* array=new int[5];
array[0]=1;
array[1]=2;
array[2]=3;
array[3]=4;
array[4]=5;
*/
for(int i=0;i<5;i++){
cout<<"array["<<i<<"]="<<array[i]<<",location="<<&array[i]<<endl;
}
int *ptr = (int*)(&array+1);
cout << (&array+1)<<endl;
cout << (array+1) << " " << (ptr-1) << endl;
cout << *(array+1) << " " << *(ptr-1) << endl;
//delete[] array;
return 0;
}
[/code] int* array=new int[5];
array[0]=1;
array[1]=2;
array[2]=3;
array[3]=4;
array[4]=5;
for(int i=0;i<5;i++)
{
cout<<"array["<<i<<"]="<<array[i]<<",location="<<&array[i]<<endl;
}
int **ptr = (&array+1);
cout << (&array+1)<<endl;
cout << (array+1) << " " << (ptr-1) << endl;
cout << *(array+1) << " " << *(*(ptr-1)+1) << endl;
输出第三个元素的话应该是*(*(ptr-1)+2);也就是说最里边括号必须是ptr-1,这样才会将指针array的地址回归正位,然后对其进行解引用*,这才取出了动态开辟的空间的首地址,然后对其+1就是移动到第二个元素,等等...