C語言中的二維陣列與指標

2021-09-25 23:48:21 字數 853 閱讀 3834

最近複習了一下c語言中的指標陣列、陣列指標這些比較讓人困惑的概念,有了一些新的認識。

在定義變數時,需要用到一些運算子,比如、*、()。這些運算子有一定優先順序,我們可以根據其優先順序來對我們定義的變數進行理解。具體的方法就是:加括號。下面舉幾個例子:

(1)二維陣列

定義:int a[3][4]; 

理解:運算子遵循從左到右的順序,因此上面的表示式可以理解為:int (a[3])[4]; 括號()裡面表明a是乙個長度為3的陣列,括號外面表明這個陣列的元素是int[4]型別的(陣列的元素也是陣列)。

(2)指標陣列

定義:int *p[3]; 

理解:的優先順序高於*,因此上面的表示式可以理解為:int *(p[3]); 括號裡面表明p是乙個長度為3的陣列,括號外面表明這個陣列的元素是int*型別的(陣列的元素是指標)。

(3)指標的指標

定義:int **pp;

理解:*運算子遵循從右到左的順序,因此上面的表示式可以理解為:int *(*pp); 括號裡面表明pp是乙個指標,括號外面表明這個指標指向的元素是int*型別的(指標指向指標)。

(4)二維陣列的指標

定義:int (*pa)[4];

理解:上面的表示式已經帶括號()了,括號裡面表明pa是乙個指標,括號外面表明這個指標指向的元素是int[4]型別的(指標指向陣列)。

乙個陣列a,無論是一維陣列、二維陣列還是指標陣列,有以下幾點共同的屬性:

有了前兩節的知識儲備,我們再來看二維陣列。設有乙個二維陣列int a[3][4]; 

運用以上的結論,我們舉幾個例子:

C語言指標與二維陣列

includeint main int p 3 null p array p is same as array,the use of p is same as array.so p is the two devision pointer same as array int p1 array 0 0 ...

C語言指標與二維陣列

二維陣列在概念上是二維的,有行和列,但在記憶體中所有的陣列元素都是連續排列的,它們之間沒有 縫隙 以下面的二維陣列 a 為例 int a 3 4 從概念上理解,a 的分布像乙個矩陣 0 1 2 3 4 5 6 7 8 9 10 11 但在記憶體中,a 的分布是一維線性的,整個陣列占用一塊連續的記憶體...

C語言指標與二維陣列

二維陣列在概念上是二維的,有行和列,但在記憶體中所有的陣列元素都是連續排列的,它們之間沒有 縫隙 以下面的二維陣列 a 為例 int a 3 4 從概念上理解,a 的分布像乙個矩陣 0 1 2 3 4 5 6 7 8 9 10 11 但在記憶體中,a 的分布是一維線性的,整個陣列占用一塊連續的記憶體...