1. 程式人生 > >二維陣列的引數問題

二維陣列的引數問題

二維陣列作為引數:

看這樣一個例子:

老師之前講過,二位陣列作為引數,寫形參為:int (*arr)[][4]

主函式中呼叫該函式:

這樣寫,做了:

這樣寫,錯了:

這樣寫,還是錯了:

這樣再寫,還是錯了:

那我加個過好,再寫,還錯:

行,那我補一個[4],恩???還錯!??

到底怎麼才行,我就不信了。

恩,還不行。表示式必須是指向物件的指標型別。

恩,我快要…

int型別的實參與int (*)[][4]型別的形參不相容。。。

找到錯誤了,show函式傳的引數錯了。

應該這樣寫,編譯就通過了:

我知道錯在哪裡了,在主函式中定義一個二維陣列並且初始化。使用show函式,show的引數為arr,即陣列名,根據陣列名來寫函式的形參。而我之前的思路錯在先先函式的形參,然後再呼叫函式時再寫實參,這樣就錯了,error:實參和形參匹配。

下面看主函式:

int main()

{

       int arr[4][4] = {1};

       Show(arr);

       return 0;

}

Arr為二維陣列,show的形參為陣列名。那麼就要搞清楚二維陣列的陣列名錶示什麼。

 

先看一位陣列:

例如:arr[4] = {1,2,3,4};

 

資料名字      陣列型別

Arr             int *      //陣列名錶示陣列首元素地址

Arr +1          int *

Arr[1]           int

Arr[1]+1        int

 

 

二維陣列:int brr[3][4]

陣列名字      資料型別

Brr            int (*p)[4]  //指向二維陣列的指標

Brr[0]          int *p

Brr[0][0]        int

Brr[0] + 1       int *p[4]