龙空技术网

《鹏哥C语言第一课》第93.1讲 二维数组传参#c语言

鹏哥C语言 103

前言:

眼前你们对“c语言二维数组参数传递”大体比较看重,姐妹们都需要知道一些“c语言二维数组参数传递”的相关资讯。那么小编同时在网摘上网罗了一些对于“c语言二维数组参数传递””的相关文章,希望兄弟们能喜欢,姐妹们一起来学习一下吧!

93.二维数组传参的本质。

同学们,前面的视频已经给大家介绍到了数组指针的概念,同时讲了数组指针是什么以及怎么给大家初始化。后来说数组指针到底怎么用?它跟二维数组传参其实有一定的联系,二维数组传参的过程就会用到数组指针。所以这个视频先展开讲一下二维数组传参的本质,渐渐地讲到了数组指针的应用。

首先来给大家讲二维数组传参。在讲之前想告诉大家,实际上在得到一组数据的时候,不管是一维数组还是二维数组里边存放的这一组数据的时候,可能并不是直接对这组数据进行处理,而是有时候把数据的传递给某一些函数说:你帮我做一些事情吧。

之前就讲过一维数组传参,这个小节专门来讲二维数组传参。比方这地方有一个整型的二维数组,它里面放着一组数据,写一个函数pass来打印数组的全部内容。该如何去写?这给大家写一个代码,比如这给一个数组,给一个数组,知道3行,这个地方5列,也可以给它初始化一下。

它里面第一行放着12345,第二行放着23456,第三行放着34567,注意,这是数组的三行内容。现在说想把这个数组传给test函数,说:你帮我把数组内容打印出来。同志们想象一下,在访问二维数组的时候,首先知道是哪个数组吗?把数组名是不是得传过去?这个地方要知道。

其次,当在访问这个数组的时候,是不是访问一个二维数组的某一行的时候,要定位到它是某一个元素的时候,定位到它是哪一行、哪一列的,要去知道它总共有多少行才能找到它的具体某一行,要知道它总共有多少列的时候才能够定位它的某一列,对不对?所以在传参的时候是不是也得把它的行和列告诉我,否则没法知道它是几行几列的,因为要遍历,要去找它里边的每个元素,逐行逐列的去找,对不对?

这个时候注意要传过去,3行5列的,这就是二维数组传参,传数组名,同时把行和列得告诉我,否则一会没办法在这地方把行和列求出来,所以这地方行和列明确的传给你。

当然在传参的时候传的是数组名,大家注意千万不要上来之后要传个[3][5],这就错了,这其实是数组的某一个元素,而不是数组了,给大家说清楚。

现在上来写test函数,当写这个函数的时候参数怎么写?首先传过来数组,arr是二维数组,这个地方就用二维数组来接收,这样是不是更加容易理解一些?初学者更加容易接受这个语法,传过来一个二维数组,就拿二维数组接收,形式上是不是更加容易接受?

传过来一个3表示它的行,这给上一个r表示行,传过来5表示列,叫c表示列,这个函数不需要返回,写个void,里面就要把3行5列的数据打印出来。

行怎么追历?通过下标来定位的行,列怎么追历?通过下标定位的行,这个地方首先确定行,i=0,for循环i=0,i小于几?小于2,如果2是3,小于3就是i的取值就是012,正好定位到3行,然后i+。

当确定了行之后,这一行内部含有5个元素,要确定列来遍历,这个时候再给上一个intj,j等于几?0,然后for循环,j从0开始,j小于谁?j小于c,然后j++,j是5的时候,这个c是5的时候,这个地方j就是0-4,正好遍历的5列。

这个时候大家注意arr[00,我的i行j列的元素,这是不是定位它的某个元素了,那我就可以把它打印出来。这个时候同学们,print走起来,这给上个%d空格,打完一个整数之后打印空格,这样每个整型之间不会有连起来的这种效果对不对?

这个循环是打一行,一行打印完之后要换行,print这个地方给上一个\n,"给上个\n就可以了。注意这是这个地方的test函数的一个实现,它能不能达到我们的效果?Ctrl+F5代码这么一走,看结果,23456,结果是不是就出来了?

你看,现在是不是讲清楚了二维数组传参的这样一个效果,同志们如果大家能够理解二维数组传参是这样子的,那这个视频的目的就达到了。当然二维数组传参,形参的部分,刚刚这个地方我写的时候,其实就是一个数组的这种形式,传的是数组,形参写的数组。

根据对于一维数组的理解,之前讲一维数组传参的时候,形参的部分可以写成数组,也可以写成指针。二维数组是否也具有这样的特点?二维数组在传参的时候形参的部分还有什么其他的写法?二维数组传参的本质又是什么?预知后事如何,请听下回分解。

标签: #c语言二维数组参数传递