【C++】函数如何传递二维数组?二维数组是怎么通过指针进行传递?
【摘要】
举例子:
int data[3][4] ={ {1,2,3,4} , {5,6,7,8} , {9,10,11,12} };
int total = sum(data,3);
请自己先尝试写出sum函数的原型
思考过后,请继续看下面详细分析:
data 是一个数组名,该数组有3个元素,第一个元素本身又是一个数组,有4个int 值组成。
因此...
举例子:
int data[3][4] ={ {1,2,3,4} , {5,6,7,8} , {9,10,11,12} };
int total = sum(data,3);
请自己先尝试写出sum函数的原型
思考过后,请继续看下面详细分析:
data 是一个数组名,该数组有3个元素,第一个元素本身又是一个数组,有4个int 值组成。
因此,data的类型是指向4个int组成的数组的指针:
int sum( int (*ar2)[4], int size );// 注意,(*ar2)括号不能省略,省略后变成了一个指向4个int组成数组的指针了
// 实际应该是一个由4个指向int 的指针组成的数组
为了可读性,还可以写成 : int sum( int ar2[][4] , int size );
sum函数只能处理由4列组成的数组,传递的第二个参数是行数
int a[100][4];
int b[35][4];
。。。
int total1 = sum(a,100);
int total2 = sum(b,35);
int total3 =sum(a+10,20);
那么sum的原型是什么?
int sum (int ar2[][4], int size)
{
int total = 0;
for (int r = 0; r < size; r++)
for( int c = 0; c<4 ; c++ )
total += ar2[r][c];
return 0;
}
ar2[r] 是由4个int组成的数组的名称
有人疑问,假如使用(*ar2)[4]传递,那怎么表示?
ar2[r][c] == *( *(ar2 + r ) + c );
文章来源: kings.blog.csdn.net,作者:人工智能博士,版权归原作者所有,如需转载,请联系作者。
原文链接:kings.blog.csdn.net/article/details/85258099
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)