数组作为函数的参数的基本知识要点
1.数组元素作函数实参:
由于实参可以是表达式,数组元素可以是表达式的组成部分,因此数组元素当然可以作为函数的实参,与用变量作实参一样,是单向传递,即“值传送”方式。
2.数组名可以做函数参数:
a.用数组名做函数参数,应该在主调函数和被调用函数分别定义数组,例中:array是形参数组名,score是实参数组名,分别在其所在函数中定义,不能只在一方定义。
b.实参数组与形参数组类型应一致,如不一致,结果将出错。
c.在被调用函数中声明了形参数组的大小为10,但在实际上,指定其大小是不起任何作用的,因为C编译对形参数组大小不做检查,只是将是参数组的首地址传给形参数组,因此score[n]和array[n]指的是同一单元。
d.形参数组也可以不指定大小,在定义数组时在数组名后面跟一个空的方括弧,有时为了在被调用函数中处理数组元素的需要,可以另设一个参数,传递需要处理的数组元素的个数。
e.用数组名作函数实参时,不是把数组元素的值传递给形参,而是把实参数组的起始地址传递给形参数组,这样两个数组就共占同一段内存单元。
float average(float array[10]) { int i; float aver,sum=array[0]; for(i=1;i<10;i++) sum=sum+array[i]; aver=sum/10; return(aver); } main() { float score[10],aver; int i; printf("input 10 scores:\n"); for(i=0;i<10;i++) scanf("%f\n",&score[i]); printf("\n"); aver=average(score); printf("average score is %5.2f\n",aver); }
3.用多维数组名作函数的参数:
多维数组元素可以作为实参,可以用多维数组名作为实参和形参,在被调用函数中对形参数组定义时可以指定每一维的大小,也可以省略第一维的大小说明。如:int array[3][10];或int array[][10];
吾屋无污,吴捂屋污,诬吾污屋,吾晤吴污,吾无物污,吴侮污吾,吾忤吴屋,悟吴诬吾,污屋吴污,吴侮吾污,吾勿武侮,吾唔吴误,诬侮污吾,吾屋悟忤.