初学者,希望大神们多多指教
一、值传递
首先应该知道两个概念,形式参数和实际参数。形式参数:在定义函数时函数名后面括号中的变量名称。实际参数:在主调函数中调用一个函数时,函数名后面括号中的参数。实际参数可以是常量、变量或表达式,但要求他们有确定的值。说明:实参与形参的类型应相同或赋值兼容。
值传递:实参向形参的数据传递是“值传递”,单向传递,只能由实参传给形参,而不能由形参传给实参。
例题:输入两个整数,要求输出其中值较大者。
#include<stdio.h>
int main()
{int max(int x,int y); //对max函数的声明
int a,b,c;
printf("please enter two integer numbers:"); //提示输入数据
scanf("%d %d",&a,&b); //输入两个整数
c=max(a,b); //调用max函数,有两个实参a,b。大数赋给变量c
printf("max is %d\n",c); //输出大数c
return 0;
}
int max(int x,int y) //定义max函数,有两个参数。这里是实参
{int z; //定义临时变量z
z=x>y?x:y; //把x和y中大者赋给z
return(z); //把z作为max函数的值带回main函数
}
二、址传递
用数组元素作实参时,向形参变量传递的是数组元素的值,而用数组名作函数参数时,向形参(数组名或指针变量)传递的是数组首元素的地址。
(1)用数组名作函数参数,应该在主调函数和被调用函数分别定义数组.
(2)实参数组与形参数组类型应一致,不一致,结果将出错。
(3)数组名代表数组首元素的地址。传递过程中,只是将实参数组的首元素的地址传给形参数组名。
(4)形参数组可以不指定大小,在定义数组时在数组名后面跟一个空的方括号。