1. 程式人生 > >指向指標的指標與二維陣列的區別

指向指標的指標與二維陣列的區別

int main(){

int a[2][3]={{1,2,3},{4,5,6}};

int **p=a;

cout<<**p<<endl;

}

      以上程式碼有沒有問題?

      由於p是指向指標的指標,p指向一個int *型別的變數,而陣列名a表示陣列首元素的地址&a[0],因此p指向a[0]。然而a[0]並不是int *型別的變數,與p應該指向的型別不同,因此在初始化時編譯器會發現型別不匹配,產生編譯錯誤。

      應該改為:

int main(){

int a[2][3]={{1,2,3},{4,5,6}};

int (*p)[3]=a;//p為指向陣列的指標

cout<<**p<<endl;

}