指向二維陣列元素的指標變數

2021-08-07 02:33:23 字數 1564 閱讀 7504

(1)指向陣列元素的指標變數

例1.有乙個3x4的二維陣列,要求用指向元素的指標變數輸出二維陣列各元素的值.

編寫程式

1 #include 2

intmain()3;

5int *p;

6for (p = a[0]; p < a[0] + 12; p++) //

a[0]代表列指標的起點,p依次指向下乙個元素

712 printf("

%4d

", *p);

1314}15

return0;

16 }

本例是順序輸出陣列中各元素之值.若要輸出指定的某個數值元素(如a[2][3]),可以通過相對位置來計算.a[i][j]在陣列中的相對位置的計算公式為i*m+j.所以a[2][3]的位址是(p+2*4+3),即(p+11).

(2)指向由m個元素組成的一維陣列的指標變數

上例中p是int * p,指向整形資料,p+1所指元素是p所指列元素的下乙個元素.

可以改用另一種方法,使p指向乙個包含m個元素的一維陣列.這時,如果p先指向a[0](即p=&a[0]),則p+1指向a[1],p的增值以一維陣列的長度為單位.如下圖

例2. 輸出二維陣列任一行任一列元素的值.

1 #include 2

intmain()3;

5int(*p)[4

], i, j;

6 p = a; //

p指向二維陣列的0行

7 printf("

please enter row and colum:");

8 scanf_s("

%d,%d

", &i, &j); //

2個%d之間的分隔符要和輸入時的保持一致

9 printf("

a[%d][%d] = %d

",i, j, *(*(p + i) +j));

10return0;

11 }

程式分析:程式第5行中的int(*p)[4]表示定義p為乙個指標變數,它指向包含4個整型元素的一維陣列.注意*p兩側的括號不可缺少,如寫成*p[4],則代表指標陣列.

對(*p)[4]的理解,可以做出下面的比較:

①int a[4];(a有4個元素,每個元素為整型)

②int (*p)[4]

第②種形式表示 (*p)有4個元素,每個元素為整型.也就是p所指向的物件是有4個整型元素的陣列,即p是指向一維陣列的指標.p的值是該一維陣列的起始位址.

注意p的型別是int (*)[4],p指向的一維陣列的長度是16位元組,所以p每增加1,位址就增加16位元組.

c語言之指向二維陣列元素的指標變數

如何使用指針對二維陣列進行遍歷?首先我們需要明確的是 二維陣列在記憶體中是連續的,比如乙個二維陣列int a 2 3 可以視作是兩個一維陣列構成的,即int a0 3 int a1 3 我們知道,一維陣列在記憶體中是連續的一塊記憶體,並且陣列名a0,a1代表的就是該陣列首元素的位址,而正因為二維陣列...

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

指標陣列 是陣列元素為指標的陣列,本質為陣列。int p n 陣列指標 是指向陣列首元素的指標,其本質為指標。int p n 的優先順序高於指標運算子 操縱二維陣列 int a i j int pa j pa a a 代表該二維陣列的首位址 pa 代表該二維陣列的首位址 pa 也代表該二維陣列的首位...

C語言二維陣列指標(指向二維陣列的指標)

二維陣列的定義 int matrix 見圖的操作那篇文章裡面的定義 或者這篇文章提供了另外一種方法。二維陣列在概念上是二維的,有行和列,但在記憶體中所有的陣列元素都是連續排列的,它們之間沒有 縫隙 以下面的二維陣列 a 為例 int a 3 4 從概念上理解,a 的分布像乙個矩陣 0 1 2 3 4...