(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??行指針和列指針詳解

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/531089.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/531089.shtml
英文地址,請注明出處:http://en.pswp.cn/news/531089.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C語言(CED)C語言中雙引號和單引號的區別

最簡單的區別&#xff1a; 在字符型變量賦初值時&#xff0c;用單引號&#xff1b;為字符串變量賦初值時用雙引號&#xff01; 具體區別&#xff1a; 1、大小 單引號引起的一個字符&#xff0c;其大小為1個Byte。 雙引號引起的字符串&#xff0c;因為在其結尾需加一個二進…

一、Pytho第一課——Python安裝及配置路徑方法(最詳細小白教程,沒有之一。如若不懂,不是還可以私信嘛!對吧?)

目錄 一、下載軟件 二、安裝 三、編輯器 四、在Pycharm上成功運行Python程序&#xff08;配置Python解釋器&#xff09; 一、下載軟件 官方下載地址&#xff1a;https://www.python.org/downloads/&#xff08;打開似乎很吃力&#xff0c;必要時刻“掛燈”&#xff09; …

二、Python第二課——變量命名規則及字符串變量相關函數

目錄 一、變量命名規則 二、字符串變量及相關函數 1、字符串變量 2、相關函數 最后瑣碎雜物&#xff1a; 1、字符串之間的拼接 2、字符串格式控制&#xff08;制表符和換行&#xff09; 一、變量命名規則 正如其他編程語言一樣&#xff0c;程序離不開聲明變量&#x…

三、Python第三課——Python中數字的用法及編碼原則(Python禪意)

目錄 一、Python中的數字 1、整數 2、浮點數 3、整數、浮點數和字符串的聯系和區別 二、編碼原則 1、為代碼增加注釋 2、Python 禪意 A、編碼精美 B、避繁就簡 C、無簡就繁 D、使用常規方法解決問題 E、先有效、再精巧、逐步升華 一、Python中的數字 編程中&#…

四、Python第四課——Python中列表及其操作(增刪改查)

目錄 一、Python中的列表 1、列表的定義和賦值 2、列表的使用 二、列表的“增刪改查” 1、列表中元素的增加 A、在列表尾添加元素 B、在列表中插入元素 2、列表中“元素的刪除” A、使用del語句刪除元素 B、使用pop()函數刪除元素 C、彈出列表中任何位置元素…

五、Python第五課——Python中組織列表的相關函數

目錄 一、用sort()函數對列表進行永久排序 二、用sorted()函數對列表進行臨時排序 三、用reverse()函數對列表進行列表原始排序的逆序輸出 四、使用len()函數確定列表長度 創建列表后&#xff0c;內部的元素逐漸增多&#xff0c;其排列順序也是無法預測的&#xff0c;因為…

如何正確下載、安裝Codeblocks?

目錄 一、Codeblocks的下載 二、Codeblocks的安裝 三、Codeblocks的運行 相信很多同學在初學C語言時都會選擇一個短小精悍的代碼編輯器&#xff0c;如CodeBlocks&#xff08;不說別的了&#xff0c;直接切入正題&#xff09;。 在2020年&#xff08;今年&#xff09;3月份-…

Python:創建列表,其中包含數字1-1000000,為什么Pycharm控制臺結果顯示不完整?

目錄 一、問題描述&#xff08;尋找解決方法的同學直接看“標題二”&#xff09; 二、解決辦法 一、問題描述&#xff08;尋找解決方法的同學直接看“標題二”&#xff09; 在學習Python過程中遇到一個這樣的問題&#xff0c;也算是一個小BUG吧。題目大意是這樣的&#xff…

六、Python第六課——Python中的for循環及數字列表

目錄 一、Python中的for循環 1、for循環語句的聲明。 2、for循環縮進常見問題 二、數字列表 1、函數range() 2、使用range()函數創建數字列表 3、使用一系列函數處理數字列表&#xff08;統計&#xff09; 4、列表解析&#xff08;生成列表的簡潔方法&#xff09; 一…

七、Python第七課——有關列表的二三事(切片、切片的遍歷和復制)

目錄 一、切片 二、遍歷切片 三、列表的復制 一、切片 此前&#xff0c;我們學習了如何訪問單個列表以及如何處理列表中的所有元素&#xff0c;那么我們如何處理列表中的部分元素呢&#xff1f;這就引出一個概念“切片” 。我們可以把列表看成是面包&#xff0c;“切片”…

八、Python第八課——元組與列表、代碼格式

&#xff08;請先看置頂博文&#xff09;https://blog.csdn.net/GenuineMonster/article/details/104495419 目錄 一、元組的定義 二、元組的遍歷 三、代碼格式 一、元組的定義 1、元組&#xff1a;不可變的列表稱為元組。這個是相對于普通列表而言的&#xff0c;普通列表…

九、Python第九課——Python中的if語句與運用

&#xff08;請先看置頂博文&#xff09;https://blog.csdn.net/GenuineMonster/article/details/104495419 目錄 一、if語句 1、檢查變量存儲的值是否相等 2、判定字母或字符串時區別大小寫 3、檢查多個條件 4、檢查特定值是否在列表中 二、if-else語句和if-elif-el…

十、Python第十課——字典的些許知識(重點)

&#xff08;請先看置頂博文&#xff09;https://blog.csdn.net/GenuineMonster/article/details/104495419 目錄 &#xff08;請先看置頂博文&#xff09;https://blog.csdn.net/GenuineMonster/article/details/104495419 初識字典 1、創建字典 2、字典的“增刪改查” …

百度地圖API如何申請?(自認為比較詳細,如解決了你的問題請收藏、點贊、關注)

&#xff08;請先看置頂博文&#xff09;本博打開方式&#xff0c;請詳讀_liO_Oil的博客-CSDN博客_怎么把androidstudio卸載干凈 注意&#xff1a;自己申請的AK要保存好&#xff0c;最好不要外借&#xff0c;避免不必要的麻煩&#xff01;&#xff08;寫在前面&#xff09; 目…

PythonPyqt5項目開發完成后如何使用pyinstaller打包——以Pycharm編輯器為例(目前為止最正確的版本,成功打包日期為2020.11.26)

&#xff08;請先看置頂博文&#xff09;本博打開方式&#xff0c;請詳讀_liO_Oil的博客-CSDN博客_怎么把androidstudio卸載干凈 最近用Python開發了一個可視化界面&#xff0c;開發過程如魚得水&#xff0c;幾乎沒有BUG出現&#xff08;項目簡單&#xff09;。但是在臨近交付時…

十一、Python第十一課——用戶輸入和另一種循環(While)

&#xff08;請先看置頂博文&#xff09;https://blog.csdn.net/GenuineMonster/article/details/104495419 學了這么久的Python&#xff0c;大家肯定會好奇&#xff0c;不是說機器學習嗎&#xff1f;不是人機交互嗎&#xff1f;不是人工智能嗎&#xff1f;怎么我學了Python都十…

如何讓新創建的Python文件自動生成作者信息等內容(以Pycharm為例)

&#xff08;請先看置頂博文&#xff09;https://blog.csdn.net/GenuineMonster/article/details/104495419 打開Pycharm軟件后&#xff0c;點擊“File”&#xff0c;然后點擊“Settings”&#xff0c;就會出現下面截圖界面&#xff1a;然后按照箭頭所指&#xff0c;在對應位置…

如何將谷歌瀏覽器的背景色(包括顯示的網站界面等)全部調為黑色?2020.12.28

&#xff08;請先看置頂博文&#xff09;https://blog.csdn.net/GenuineMonster/article/details/104495419 因為電腦顯示器正對窗戶的原因&#xff0c;平時為了透氣通風不能使用遮光簾&#xff0c;所以我將整個電腦的所有軟件的主題色設為黑色&#xff0c;這樣能降低一些光的…

Windows 10如何消除文件夾右上角的“相對箭頭”?

&#xff08;請先看置頂博文&#xff09;本博打開方式&#xff01;&#xff01;&#xff01;請詳讀&#xff01;&#xff01;&#xff01;請詳讀&#xff01;&#xff01;&#xff01;請詳讀&#xff01;&#xff01;&#xff01;_Cat-CSDN博客 整理筆記本電腦時發現&#xff0…

目標檢測第1步:如何在Windows 10下安裝MiniConda?

&#xff08;請先看置頂博文&#xff09;本博打開方式&#xff01;&#xff01;&#xff01;請詳讀&#xff01;&#xff01;&#xff01;請詳讀&#xff01;&#xff01;&#xff01;請詳讀&#xff01;&#xff01;&#xff01;_Cat-CSDN博客 目錄 一、Conda是什么&#xff…