我的世界工业2有核聚变:一个C的问题

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/01 22:24:42
/*input 10 scores */
main()
{int score[10][5];
int i,j;
printf("please input 10 score:\n");
for(i=0;i<10;i++)
{ for(j=0;j<5;j++)
scanf("%d",&score[i][j]);
if(j%5==0)
printf("\n");
}
stu_ave(&score);
}
/* output every score and total score */
/* stu_ave */
int stu_ave(int &s)
{int sum=0;
int i,j;
for(i=0;i<10;i++)
{for(j=0;j<5;j++)
sum=sum+s[i][j];
}
}

我想把MAIN里的score的地址传给stu_ave,可是stu_ave(int &s)这个地方出错怎么回事

函数的实参对形参传地址不是这样用的,而是通过指针来完成的。在主函数中调用子函数的时候,实参直接用数组名,在子函数的声明中要把形参定义为指针型。我把你的程序修改如下:
/*input 10 scores */
main()
{int score[10][5];
int i,j;
printf("please input 10 score:\n");
for(i=0;i<10;i++)
{ for(j=0;j<5;j++)
scanf("%d",&score[i][j]);
if(j%5==0)
printf("\n");
}
stu_ave(score); /*调用子函数时实参用数组名*/
}
/* output every score and total score */
/* stu_ave */
int stu_ave(int *s) /*形参定义为指针型*/
{int sum=0;
int i,j;
for(i=0;i<10;i++)
{for(j=0;j<5;j++)
sum=sum+s[i][j];
}
}

stu_ave(&score);
错在这一句,因为你下面的函数是int stu_ave(int &s) ,表示传进来的是一个整型数的地址是吧,
而数组的名称就表示它的首地址了,所以score前不用加&号。

stu_ave(&score);
改成
stu_ave(*score);

stu_ave(&score); 改成 stu_ave(score);