先看如下程序:
int main()
{
int a [5]={1,2,3,4,5};
int *ptr=(int *)(&a+1); //区别于a和a[0]以及&a !
printf("%d,%d\n",*(a+1),*(ptr-1));
}
输出结果为 2,5
这里需要弄明白的是数组和指针的关系:
int a[5];
cout<<"a = "<<a<<endl;
cout<<"&a = "<<&a<<endl;
cout<<"a+1 = "<<a+1<<endl;
cout<<"&a+1 = "<<&a+1<<endl;
cout<<"*********************"<<endl;
int b[3][4];
cout<<"b = "<<b<<endl;
cout<<"&b = "<<&b<<endl;
cout<<"b+1 = "<<b+1<<endl;
cout<<"&b+1 = "<<&b+1<<endl;
cout<<"*********************"<<endl;
int c[3][4][3];
cout<<"c = "<<c<<endl;
cout<<"&c = "<<&c<<endl;
cout<<"c+1 = "<<c+1<<endl;
cout<<"&c+1 = "<<&c+1<<endl;