一、二维数组传参竟然不是用二级指针进行接收?
今天进行再一次的二级指针学习时,发现了一条以前没怎么注意过的知识点:二维数组进行传参只能用二维数组(不能省略列)进行接收或者是数组指针。
问题复现代码如下:
二、以前为什么可以呢?
我这么久都没有发觉的根本原因是:我之前一般都是使用动态开辟的二维数组进行使用,所以理所当然传递二级指针作为参数。
代码如下:
三、二维数组本质上是两个一维数组的叠加
int arr[3][5] = {0};
arr的含义是:arr是一个3行一维数组,每一行是一个有5个元素的一维数组。
所以c语言只是叫了一个二维数组,本质上就是一维数组,物理空间的存储方式都是一样的。
问题剖析:
所以在传递参数的时候,传的是二维数组名,也就是二维数组首元素的地址,也就是一维数组的地址,就是一个数组指针,所以使用二级指针并不能接得住,只能用数组指针或者就用二维数组进行接收。
正确示例: