读书人

处理数组的函数最后一个函数不是很懂

发布时间: 2012-03-23 12:06:21 作者: rapoo

处理数组的函数,最后一个函数不是很懂,求解释

C/C++ code
# include <stdio.h># define ROWS 3# define COLS 4void sum_rows(int ar[][COLS],int rows);void sum_cols(int [][COLS],int);int sum2d(int(*ar)[COLS],int rows);int main(void){    int junk[ROWS][COLS] = {{2,4,6,8},{3,5,7,9},{12,10,8,6}};    sum_rows(junk,ROWS);    sum_cols(junk,ROWS);    printf("Sum of all elemente = %d\n",sum2d(junk,ROWS));    return 0;}void sum_rows(int ar[][COLS],int rows)  //这个函数不是使用遍历来对行进行求和{    int r;    int c;    int tot;    for (r=0;r<rows;r++)    {        tot = 0;        for (c=0;c<COLS;c++)            tot += ar[r][c];        printf("row %d:sum = %d\n",r,tot);    }}void sum_cols(int ar[][COLS],int rows)  //这个也是使用遍历来对列进行求和{    int r;    int c;    int tot;    for (c=0;c<COLS;c++)    {        tot = 0;        for (r=0;r<rows;r++)            tot += ar[r][c];        printf("col %d:sum = %d\n",c,tot);    }}int sum2d(int ar[][COLS],int rows)  //这个就不清楚了 我的理解是好像只是遍历了列,怎么会求出数组的总和呢。{    int r;    int c;    int tot = 0;    for (r=0;r<rows;r++)        for (c=0;c<COLS;c++)            tot += ar[r][c];    return tot;}




不知道注释上理解的有几个对的 ,还有就是这里说是用指针 但是除了声明上没见用其他的什么指针啊。

[解决办法]
遍历是不是要对每个元素走一遍,然后tot += ar[r][c];
即:
C/C++ code
 for (r=0;r<rows;r++) {        for (c=0;c<COLS;c++)        {                  tot += ar[r][c];         }  }
[解决办法]
注意tot变量,前两个函数都是在第一层for循环中重置为0了,最后一个是一直累加的

读书人网 >C++

热点推荐