首页 > 代码库 > 二维数组与函数

二维数组与函数

/*----------------计算各行、各列及所有元素的值--------------*/

#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),还有一种就是用变长数组的形式。

二维数组与函数