阅读下面代码,程序列举了3种二维数组作为参数传递的方法:
#include<stdio.h>
#define ROWS 3
#define COLS 4
void sum_rows(int arr[][COLS],int rows);
void sum_cols(int [][COLS],int); //可以省略名称
int sum2d(int (*arr)[COLS],int rows); //另一种语法形式
int main(void)
{
int junk[ROWS][COLS]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
sum_rows(junk,ROWS);//求出每行的数值总和。
printf("\n"); //求出每列的数值总和。
sum_cols(junk,ROWS);//求出全部数值的总和。
printf("\nthe sum of the junk is %d",sum2d(junk,ROWS));
getchar();
return 0;
}
void sum_rows(int arr[][COLS],int rows)
{
int r,c,tot;
for(r=0;r<rows;r++)
{
tot=0;
for(c=0;c<COLS;c++)
{
tot+=arr[r][c];
}
printf("row%d,sum=%d\n",r,tot);
}
}
void sum_cols(int arr[][COLS],int rows)
{
int r,c,tot;
for(c=0;c<COLS;c++)
{
tot=0;
for(r=0;r<rows;r++)
{
tot+=arr[r][c];
}
printf("col%d,sum=%d\n",c,tot);
}
}
int sum2d(int (*arr)[COLS],int rows)
{
int r,c,tot=0;
for(r=0;r<rows;r++)
{
for(c=0;c<COLS;c++)
{
tot+=arr[r][c];
}
}
return tot;
}