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

文章讨论了二维数组在C语言中作为函数参数传递时的规则,指出二维数组传参应使用二维数组本身或数组指针,而不是二级指针。这是因为二维数组本质上是连续的一维数组,传参时传递的是首元素的地址,即一维数组的地址。作者通过代码示例解释了这一概念并提供了正确传递二维数组的方法。
摘要由CSDN通过智能技术生成

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

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

        问题复现代码如下:

         二、以前为什么可以呢?

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

        代码如下:

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

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

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

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

问题剖析:

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

正确示例:

  • 11
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值