为什么一定要初始化呢?
#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(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 elements=%d\n",sum2d(junk,ROWS));
return 0;
}
void sum_rows(int ar[][COLS],int rows)
{
int r;
int c;
int tot=0;//这里为什么tot要初始化呢?教材上的例程没有初始化,编译通不过,我把它初始化了,就通过了!我的环境是:VS2010
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=0;//这里也是
for(c=0;c<COLS;c++)
{
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;
}