1.用数组名作为函数参数时,要求形参和相对应的实参都必须是类型相同的数组,都必须有明确的数组说明
2.用数组名作为函数参数,应在主调函数和被调函数中分别定义数组,且数据类型必须移植,否则结果将出错,形参数组中的[]必不可少,以表明该形参是一维数组
3.c编译系统对形参数组大小不做检查,所以形参数组可以不指定大小。 如果指定形参数组的大小,则实参数组的大小必须大于形参数组,否则因形参数组的部分元素没有确定值而导致计算结果错误
4.在普通变来那个作为参数时,形参变量和实参变量是由编译系统分配的两个不同的内存单元,在函数调用时发生的值传送是把实参变量的值赋予形参变量。在用数组名作为函数参数时,不是进行值传送,即不是把实参的数组的每一个元素的值都赋予形参的各个元素。因为实际上形参数组并不存在,编译系统不为形参数组分配内存。也就是数组名作为函数参数时,不是值得单向传递,而是把实参数组的首地址传给形参数组,这两个数组共用一段存储单元,即实参数组名和形参数组名共同指向数组的第一个元素。 在前面介绍过,数组名就是数组的首地址,因此在数组名作为函数参数时所进行的传送只是地址的传送,也就是说把实参数组U的首地址赋予形参数组名,形参数组名取得该首地址之后,也就等于有了实在的数组。
----------------------------------------------------------------------------------------------------------------------------------------------摘自《C语言宝典》 
#include <stdio.h>

/*  * 输入数组  */ void input(int a[10],int n) { int i; for(i=0;i<n;i++) scanf("%d",&a[i]); printf("\n"); }
/*   * 求最大值函数,形参为数组  */ int maxa(int a[],int n) { int i; int m; for(i=1;i<n;i++) if(m<a[i]) m=a[i]; return m; }

/*  * 输出数组中的n个数据元素  */ void print(int *a,int n) { int  i; for(i=0;i<n;i++) printf("%4d",a[i]); printf("\n"); }
int main(void) { int b[10]; int max; input(&b[0],10);//调用输入函数,往数组b中输入10个数据元素 max=maxa(b,10);//求10个元素的最大值 printf("array max is %d\n",max); printf("the array is :\n"); print(b,10);//输出数组b中的元素 }  

更多推荐

C语言数组学习心得(一)