在数组作为子函数的参数时,其数组长度并不会被传递。因为在子函数中的数组参数本身是一个指向输入数组首地址的指针。
解决办法是,同时传递数组的长度到子函数中。
e.g 某求数组中,所有数的平均值
#include<stdio.h>
#include<time.h>
int aver(int[],length) //声明子函数
int main()
{
srand(time(0));
int Array[10]{0}; int L = aver(Array,sizeof(Array)/sizeof(int); //L为数组长度
for(int i=0;i<L;i++) { Array[i] =rand()%100; } //为数组没一个元素赋随机值
printf(“%d”,aver(Array,L)); //打印平均值
return 0;
}
int aver(int A[],int length) //定义子函数 for 循环做累加
{
int m = 0;
for (int i = 0; i <length; i++) //因为 数组元素是从0开始的,所以是 小于
m+=A[i]; // 而非 小于等于
return m/length; //累加除以长度 为平均值
}