(CED)列指標與行指標的聯絡與區別

2021-10-03 12:49:51 字數 3330 閱讀 9041

列指標:被稱為是指標變數指向二維陣列的某個元素

一般使用時會有如下定義:

int a[3][4]=;

int *p;

而上述**定義的指標p,一般按照下表方式指向二維陣列a中的元素:

語法樣例說明

指向任意元素指標變數=&陣列名[下標1][下標2]p=&a[1][2]p指向的元素為7

指向首元素指標變數=&陣列名[0][0]

指標變數=*二位陣列名

p=&a[0][0]

或p=*a

p指向首元素,即數值1所在的位置

當指標p指向二維陣列a的首元素後,p+1指向第2個元素,p+2指向第三個元素,如下表:

p(對應的內容:1)p+1(對應的內容:2)p+2(對應的內容:3)p+3(對應的內容:4)

p+4(對應的內容:5)p+5(對應的內容:6)p+6(對應的內容:7)p+7(對應的內容:8)

p+8(對應的內容:9)p+9(對應的內容:10)p+10(對應的內容:11)p+11(對應的內容:12)

因為這種定義下的指標p,每執行加1操作後,將會指向下一列的乙個元素,因此稱為「列指標」

元素名稱元素位址元素內容

a[i][j]p+i*n+j*(p+i*n+j)

行指標:指標變數指向二維陣列的某一行

一般使用時,有如下定義:

int a[3][4]=;

int (*p)[4];//定義行指標,其「4」要和定義的二維陣列的列數目「4」相同

p=a; //行指標p指向二維陣列a的首行

對於行指標,可以按如下解釋理解:

可以將二維陣列的首行視為乙個特殊的元素,而這個特殊的元素其實就是乙個一維陣列。那麼上述**定義的二維陣列即為乙個由三個特殊元素組成的「一維陣列」。此時a即是這個一維陣列的名稱,按照一維陣列的定義及知識可得,a是這個一維陣列的陣列名,也是首位址,也就是第乙個元素的位址,也就是第一行的首位址,指的是首行一整行。所以,a+0.a+1,a+2都是行指標。(橘黃色和橘黃色對應,綠色和綠色對應)

所以就有如下**(描述指向各行的行指標):

表示方法說明指標型別

a或者a+0指向第0行行指標

a+1指向第1行行指標

a+2指向第2行行指標

有了行指標之後,我們以第0行為例,展開說明行裡的各個元素的表示方法等:

表示方法說明指標型別

a[0]是一維陣列名稱,首位址,第0個元素的位址(a[0]+0)列指標

a[0]+1第0行,第1個元素列指標

a[0]+2第0行,第2個元素列指標

a[0]+3第0行,第3個元素列指標

注:為了方便起見,我這裡的元素排序從0開始,即第0個,第1個,與陣列的下標對應。

元素名稱元素位址元素內容

a[i][j]*(a+i)+j或a[i]+j*(*(a+i)+j)或*(a[i]+j)

可表示為a[i]+j,由於a[i]等價於*(a+i)(根據一維陣列的定義可知),因此其位址可表示為*(a+i)+j。

先明白兩個前文說的兩個事情:

行指標:指的是一整行,不指向具體元素。

列指標:指的是二維陣列中某一行的某個具體元素。

可以將列指標認為是行指標的具體元素,行指標是列指標的位址。

兩者間的具體轉化:

*行指標--->列指標

&列指標--->行指標

*是指標運算,&取址運算。*後面必須是指標變數,&後面則什麼變數都可以。

行指標**:

#include//行指標輸入8個元素,再輸出

int main()

}//p=a;

for(i=0;i<2;i++)

}return 0;

}

參考:rockeyqin  行指標和列指標詳

行指標與列指標 2

行指標,顧名思義就是指向一行的指標。那麼 會用到行指標呢,用的最多的,那就是二維指標了,大家都知道,我們通常把二維指標看成乙個行列式,但是它在記憶體中的排序卻是和一維指標一樣的。比如組a 2 3 a是整個陣列的首位址,同時也指向第一行元素,即a是乙個行指標,它每加1,所指位址移動二維陣列的一行,a ...

指標與陣列之間的聯絡

指標和陣列的關係 對於乙個一維陣列,例如int a 10 那麼a代表的是陣列的首位址,它和 a 0 是等價的。定義指標int p,p a 等價於p a 0 如果 p 指向a 0 那麼 p 就是 a 0 中的元素,p i 是陣列元素 a i 的位址,p i 就是陣列元素 a i 的內容。指標與陣列的轉...

C語言的行指標和列指標

一 定義二維陣列 1 定義方式 資料型別 陣列名 行數 列數 例如 int a 3 4 3行4列 c語言對二維陣列採用的這種特殊的定義方式,使得二維陣列可以被看作一種特殊的一維陣列 它的元素又是乙個一維陣列。例如 上圖中的a可以看出是乙個一維陣列,他有3個元素 a 0 a 1 a 2 每個元素又包含...