###数组作为函数参数
调用有参函数时,需要提供实参(可以是常量、变量或者表达式。数组元素的作用与变量相当,所以一般来说,凡是变量可以出现的地方,都可以用数组元素代替。
此外,数组名也可以作实参和形参,传递的是数组第一个元素的地址。
###数组元素作函数实参
数组元素可以用作函数实参,但是不能用作形参。因为形参是在函数被调用时临时分配存储单元的,不可能为一个数组元素单独分配存储单元(数组是一个整体,在内存中占连续的一段存储单元)。
在用数组元素作函数实参时,把实参的值传给形参,是**“值传递”方式。数据传递方向是从实参传到形参,单向传递**。
####例题
输入10个数,要求输出其中值最大的元素和该数是第几个数。
程序编写
#include<stdio>
int main()
{
int max(int x,int y); //函数声明
int a[10],m,n,i;
printf("enter 10 integer numbers:");
for(i=0;i<10;i++) //输入10个数给a[0]~a[9]
scanf("%d",&a[i]);
printf("\n");
for(i=1,m=a[0],n=0;i<10;i++)
{
if(max(m,a[i]>m) //若max函数返回的值大于m
{
m=max(m,a[i]); //max函数返回的值取代m原值
n=i; //将此数组元素的序号记下并放在n中
}
}
printf("The largest number is %d\nit is the %dth number.\n",m,n+1);
return 0;
}
int max(int x,int y) //定义max函数
{
return(x>y?x:y); //返回x和y中较大者
}
思路解析
1.定义一个数组a,长度为10,用来存放10个数。
2.设计一个函数max,用来求两个数中最大者。
3.在主函数中定义一个变量m,m的初值为a[0],每次调用max函数后返回值存放在m中。
4.依次将数组元素a[1]~a[9]与m比较,最后得到的m值就是10个数中最大的。