C++常见问题:二维数组作为参数传递和使用

文章详细解释了在C语言中,二维数组作为函数参数时的两种常见形式,强调了数组名在内存中的表示以及指针解引用的过程。通过arr[r][c]的运算,阐述了如何访问二维数组中的元素,明确了数组指针的概念及其在内存中的行为。
摘要由CSDN通过智能技术生成

将二维数组作为参数,传递给函数时常有两种形式:

sum(int (*arr)[4],int size);
sum(int arr[][4],int size);

这里的 arr 实际上是一个数组指针(即 & 数组名),arr 首先和 * 结合,因此 arr 首先是一个指针类型变量,然后这个指针类型变量指向的是一个由四个 int 类型变量组成的数组,即一维数组指针,而非指向一维数组首地址的数组名。而这里的 size 即是二维数组的行数。

而在使用二维数组的时候直接使用:arr[r][c]

arr[r][c]=*(*(arr + r) + c);

arr  表示一维数组指针,指向由四个int组成的数组,也即二维数组的第一行

arr + r 则是指向二维数组的第 R 行数组指针,这一行同样是四个 int 类型组成的数组

*(arr + r)则即解引用行指针,即表示的是第 R 行(一个数组由四个 int  类型变量组成),同时也表示指向这个由四个int类型组成数组的第一个元素的地址

*(arr + r)+ c 则表示指向 R 行这个由四个int类型组成数组中第 C 个元素的地址

*(*(arr + r)+ c) 也即arr[r][c]  则即解引用上述指向 C 的指针,也即C元素 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值