首页 > 代码库 > 二维数组与函数
二维数组与函数
/*----------------计算各行、各列及所有元素的值--------------*/
#include<stdio.h>
#define ROWS 3
#define COLS 4
void sum_rows(int ar[][COLS],int rows);
void sum_cols(int [][COLS],int);
int sum2d(int (*ar)[COLS],int rows);
int main()
{
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 the elements = %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;
}
总结:这是通过指针方式传值,int ar[][COLS]是一个指针,表示一个由4个int值构成的数组的指针,即该指针指向一个包含4个int值的数组。还有一种方式是int (*ar)[COLS]。
注:二维数组中传值的两种函数的参数形式为:void sum_rows(int ar[][COLS], int rows); int sum2d(int (*ar) [COLS], int rows),还有一种就是用变长数组的形式。
二维数组与函数