【概念辨析】二维数组传参的几种可能性

        一、二维数组传参竟然不是用二级指针进行接收?

        今天进行再一次的二级指针学习时,发现了一条以前没怎么注意过的知识点:二维数组进行传参只能用二维数组(不能省略列)进行接收或者是数组指针。

        问题复现代码如下:

【概念辨析】二维数组传参的几种可能性_第1张图片

         二、以前为什么可以呢?

        我这么久都没有发觉的根本原因是:我之前一般都是使用动态开辟的二维数组进行使用,所以理所当然传递二级指针作为参数。

        代码如下:

【概念辨析】二维数组传参的几种可能性_第2张图片

         三、二维数组本质上是两个一维数组的叠加

int arr[3][5] = {0};

        arr的含义是:arr是一个3行一维数组,每一行是一个有5个元素的一维数组。

        所以c语言只是叫了一个二维数组,本质上就是一维数组,物理空间的存储方式都是一样的。

问题剖析:

        所以在传递参数的时候,传的是二维数组名,也就是二维数组首元素的地址,也就是一维数组的地址,就是一个数组指针,所以使用二级指针并不能接得住,只能用数组指针或者就用二维数组进行接收。

正确示例:

【概念辨析】二维数组传参的几种可能性_第3张图片

你可能感兴趣的:(c语言学习笔记,c语言,学习,经验分享)