(1)指向陣列元素的指標變數
例1.有乙個3x4的二維陣列,要求用指向元素的指標變數輸出二維陣列各元素的值.
編寫程式
1 #include 2本例是順序輸出陣列中各元素之值.若要輸出指定的某個數值元素(如a[2][3]),可以通過相對位置來計算.a[i][j]在陣列中的相對位置的計算公式為i*m+j.所以a[2][3]的位址是(p+2*4+3),即(p+11).intmain()3;
5int *p;
6for (p = a[0]; p < a[0] + 12; p++) //
a[0]代表列指標的起點,p依次指向下乙個元素
712 printf("
%4d
", *p);
1314}15
return0;
16 }
(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程式分析:程式第5行中的int(*p)[4]表示定義p為乙個指標變數,它指向包含4個整型元素的一維陣列.注意*p兩側的括號不可缺少,如寫成*p[4],則代表指標陣列.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 }
對(*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...