(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.mzph.cn/news/531089.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一、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…

十二、Python第十二课——函数

&#xff08;请先看置顶博文&#xff09;https://blog.csdn.net/GenuineMonster/article/details/104495419 目录 &#xff08;请先看置顶博文&#xff09;https://blog.csdn.net/GenuineMonster/article/details/104495419 目录 目录 &#xff08;请先看置顶博文&#xff…