【C++】函数如何传递二维数组?二维数组是怎么通过指针进行传递?

举报
王博Kings 发表于 2020/12/29 23:56:49 2020/12/29
【摘要】 举例子: 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的原型是什么?


  
  1. int sum (int ar2[][4], int size)
  2. {
  3. int total = 0;
  4. for (int r = 0; r < size; r++)
  5. for( int c = 0; c<4 ; c++ )
  6. total += ar2[r][c];
  7. return 0;
  8. }

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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。