#include <iostream> #include <stdio.h> using namespace std; int main() { int test[2][3]={{1,2,3},{4,5,6}}; int (*A)[3]; A = &test[0];// A = test cout<<(*A)[0]<<endl; cout<<(*A)[4]<<endl; cout<<**A<<endl; cout<<**(A+1)<<endl; // cout<<**(&*A+1)<<endl cout<<*(*A+1)<<endl; }
int a[]={1,2,3,4,5}; int *ptr =(int*)(&a+1); cout<<*(a+1); //2 cout<<*(ptr-1); //5
陣列名a本身就是指標,再加上個&就變成了雙指標,這裡的雙指標就是指二維陣列,&a+1,就是整體陣列加一行,ptr指向a的第6個元素。
*A 可以看成一個(含有3個int元素的陣列的)陣列名,所以類推,去掉*,等於加上&, A是雙指標,加1,就是陣列整體加一行。