数组元素作为实参时,将数组元素的值传递给形参,传递的方向是从实参向形参的单向值传递。
例:编写函数求一维数组的最大值。
#include<stdio.h>
int main(){
int max(int a,int b);
int a[]={2,5,12,78,3,5,78,34,10,9};
int m=a[0];
for(int i=0;i<=9;i++){
if(max(m,a[i])>m)m=a[i];}
printf("max=%d",m);
return 0;
}
int max(int a,int b){
return a>b?a:b;
}
当数组作为形参时,虽然形式上还是数组,比如void sort(int arr[ ])
,但是并不意味着真正建立了一个包含和实参数组大小相同的数组,在调用函数时也不对它分配存储单元,只是用array[ ]
这样的数组形式表示array
是一维数组名,来接收实参传来的地址,因此array中的方括号的数值并无实际作用,编译器对数组维度进行忽略。
例:
#include<stdio.h>
int main(){
void fun(int a[]);
int a[]={1,2,3,4,5,6,7,8,9,10};
fun(a);
for(int i=0;i<=9;i++){
printf("%3d",a[i]);
}
return 0;
}
void fun(int a[]){
for(int i=0;i<=9;i++)
a[i]=a[i]+10;
}
注意: