数组名当做函数实际参数传递的是什么,内存空间和变量的值传递有什么不同点和相同点也是值传递值不过传递的是地址而已
#include <stdio.h>
void initArry(int arry[], int len)//数组初始化
{
int i;
for(i = 0;i<len; i++){
printf("请输入第%d个学生的成绩:\n",i+1);//i+1,是因为数组下标是从0开始,加1方便区分
scanf("%d",&arry[i]);
}
puts("done");
}
void printArry(int arry[],int len)//数组输出
{
int i;
printf("总人数%d个\n",len);
for(i = 0;i<len; i++){
printf("%d ",arry[i]);
}
puts("\n done\n");
}
float getAverage(int arry[], int len)//获取平均分
{
int i;
float aver = 0.0;
int sum = 0;//总分这个变量一定手动初始化为0,默认值可能是一个大数会影响结果
for(i = 0;i<len; i++){
sum += arry[i];//sum=sum+arry[i];
}
aver = (float)sum/len;
return aver;
}
int main()
{
int classOne[5];//一班
int classTwo[10];//二班
float averOfClassOne;//一班的平均分
float averOfClassTwo;//二班的平均分
int lenOfClassOne = sizeof(classOne)/sizeof(classOne[0]);//数组大小
int lenOfClassTwo = sizeof(classTwo)/sizeof(classTwo[0]);
initArry(classOne,lenOfClassOne);//初始化数组
initArry(classTwo,lenOfClassTwo);
printArry(classOne,lenOfClassOne);//打印初始化数组
printArry(classTwo,lenOfClassTwo);
averOfClassOne = getAverage(classOne,lenOfClassOne);//获得平均分
averOfClassTwo = getAverage(classTwo,lenOfClassTwo);
printf("一班的平均分:%f\n",averOfClassOne);//打印平均分
printf("二班的平均分:%f\n",averOfClassTwo);
return 0;
}
结果