在c语言中,函数参数的传递分为两类,一是值传递,二是指针(地址)传递。
先来说说函数的值传递,当函数被调用时临时分配存储单元,即形参,形参是没有数值的,这时就需要把声明函数时输入的实参传给形参,这就是值传递,言简意赅的说就是
“从实参传给形参,单向传递”。其中有个特别的是数组元素作为函数参数,但是运行过程是一样的。
例如:
#include<stdio.h>
int main()
{int max(int x,int y); //对max函数的声明
int a,b,c;
scanf("%d%d",&a,&b);
c=max(a,b); //调用max函数
printf("max is %d\n",c);
return 0;
}
int max(int x,int y) //定义max函数
{int z; //定义临时变量z
z=x>y?x:y;
return(z); //把z的值作为max函数的值带回main函数
}
再就是函数的指针传递了,就是函数名做函数参数是发生的传递类型,用数组名作函数实参时,向形参(数组名或指针变量)传递的是数组首元素的地址。
多维数组名也可以做函数形参和实参,这点和上述情况类似。在被调用函数中对形参数组定义时可以指定每一维的大小,也可以省略第一维的说明,例如:
int array[3][10];
或
int array[][10];
注意:1、用数组名作函数参数时,应该在主调用函数和被调用函数分别定义数组。
2、实参数组与形参数组类型必须一致,否则将出现错误。
3、形参数组可以不指定大小,在定义数组时在数组名后不说明数组大小。