用数组名做函数参数与用数组元素作实参有几点不同:
(1)用数组元素作实参时,只要数组类型和函数的形参变量的类型一致,那么作为下标变量的数组元素的类型也和函数形参变量的类型是一致的。因此,并不要求函数的形参也是下标变量。换句话说,对数组元素的处理是按普通变量对待的。用数组名作函数参数时,则要求形参和相应的实参都必须是类型相同的数组,都必须有明确的数组说明。当形参和实参两者类型不一致时,将会发生错误。
(2)用普通变量或下标变量作函数参数时,形参变量和实参变量都是由编译系统分配的两个不同的内存单元。在函数调用时进行的值传递是把实参变量的值赋予形参变量。在用数组名做函数参数时,不是进行值的传递,即不是把实参数组的每一个元素的值都赋予形参数组的各个元素。因为实际上形参数组并不存在,编译系统不为形参数组分配内存。因为数组名就是数组的首地址。因此用数组名做函数参数时所进行的传递实际上是地址的传递,也就是把实参数组的首地址赋予形参数组名。形参数组名取得该首地址后,也就等于有了具体的地址。实际上是形参数组和实参数组为同一数组,共同使用一段内存空间。
#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<stdlib.h>
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;
}
void main()
{ float score[10],aver;
int i;
printf(\"input 10 score:\\n\");
for(i=0; i<10; i++)
scanf(\"%f\",&score[i]);
printf(\"\\n\");
aver=average(score);
printf(\"average score is %5.2f\\n\",aver);
}
本文地址:https://www.stayed.cn/item/14812
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我