最近複習了一下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 的分布是一維線性的,整個陣列占用一塊連續的記憶體...