1. 程式人生 > >C語言中一維陣列與二維陣列

C語言中一維陣列與二維陣列

int arr [4]  //定義了一個一維陣列,長度為4;說明以下三個分別是什麼型別;

(1)arr //型別為int *,表示陣列元素首地址,即圖中箭頭指向的位置。


(2)arr+1 //型別為int *,表示陣列元素首地址+1,即圖中箭頭指向的位置。


(3)arr [0] //型別為int ,表示第一個元素,即圖中紅色的格子。

int brr [3][4]  //表示定義了一個3行4列的二維陣列,說明以下三個分別是什麼型別;

(1)brr //型別為int(*p)[4], 把一個二維陣列想象成一個特殊一維陣列並遵循行優先原則,那麼也表示陣列首地址,int(*p)[4]的含義就是整型指標p指向有4個

格子 ,就是陣列指標(指向陣列的指標),即圖中箭頭指向的位置。


(2)brr+1//型別為int * p[4],同樣把二維陣列想象成一維陣列,那麼brr+1就是首地址+1,即圖中箭頭指向的位置。


(3)brr [0]//型別為int *,brr[0]==arr,即圖中紅色的格子。

(4)brr [0]+1//型別為int *,因為指標加法不會改變指標的型別,即圖中黃色的格子。

(5)brr [0][0]//型別為int,表示的是陣列的第一個元素,即圖中的黑色粗框。


總結:遇到複雜型別式子

        1.優先順序

        2.看到以下符號

           [ ] 陣列要考慮有幾個格子;每個格子的資料型別;

         ()函式要考慮引數列表,返回值;

            *  指標要考慮指標指向的是什麼 

練習:

(1)int(* p)[4]    ()的優先順序比 * 優先順序低,那麼表示的是指標p指向的是有4個格子的陣列;  

(2)int  * p [4]         [ ]的優先順序比 * 優先順序高,那麼表示的是有4個格子的陣列p,儲存的是指標。