日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

(CED)列指针与行指针的联系与区别

發布時間:2025/3/8 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (CED)列指针与行指针的联系与区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、列指針(豎為列)

1、列指針相關定義

列指針:被稱為是指針變量指向二維數組的某個元素

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

int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; 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操作后,將會指向下一列的一個元素,因此稱為“列指針

2、列指針公式

當指針p指向了M行N列的二維數組a,則其中任意一個元素a[i][j]的相關信息可以表示為:

元素名稱元素地址元素內容
a[i][j]p+i*N+j

*(p+i*N+j)?

二、行指針(橫成行)

1、行指針相關定義

行指針:指針變量指向二維數組的某一行

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

int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; 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個,與數組的下標對應。

2、行指針公式

當指針p指向了M行N列的二維數組a,則其中任意一個元素a[i][j]的相關信息可以表示為:

元素名稱元素地址元素內容
a[i][j]*(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<stdio.h>//行指針輸入8個元素,再輸出 int main() {int a[2][4];//定義二維數組int i=0,j=0;int (*p)[4];//定義行指針p=a;//將行指針指向二維數組第0個元素int n=0;for(i=0;i<2;i++){for(j=0;j<4;j++){scanf("%d",*(p+i)+j);//輸入數字}}//p=a;for(i=0;i<2;i++){for(j=0;j<4;j++){printf("%2d",*(*(p+i)+j));//輸出n++;if(n%4==0)printf("\n");}}return 0; }

參考:RockeyQin??行指針和列指針詳解

總結

以上是生活随笔為你收集整理的(CED)列指针与行指针的联系与区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。