【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 值组成。
因此,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
- 点赞
- 收藏
- 关注作者
评论(0)