处理数组的函数,最后一个函数不是很懂,求解释
- 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了,最后一个是一直累加的