函数的参数
实参,形参,虚参,实际参数
1,有参函数在调用时,主调函数和被调函数之间有数据传递,主调函数传递数据给被调函数。主调函数传递来的数据称为实际参数,简称实参。
2,定义函数时,函数名后的参数称为形式参数,简称形参。(在定义函数时,系统并不给形参分配储存单元,形参也没有具体的数值,所以称是形参,也叫做虚参)
3,实参,形参共同作用是实现数据的传送。
4,调用函数时,实参有确定的值,所以称它是实际参数,可以是变量,常量,表达式等“确定的值”
实参和形参之间的关系:
【1】实参的个数 ,类型应该和形参的个数和类型一致。调用函数时,系统给形参分配存储单元,并且把实参的数值传递给形参。
【2】实参和形参分别属于主调函数和被调函数,具有不同的内存单元。所以,在函数调用时形参发生改变,不会影响到实参。
【3】C语言中实参和形参的结合采取的是“单向值传递”方式,只有实参传递参数给形参,形参不回传参数给实参。
实参和形参的特点:
1.形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只有在函数内部有效。函数调用结束返回主调函数后则不能再使用该形参变量。
2.实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使实参获得确定值。
3.实参和形参在数量上,类型上,顺序上应严格一致,否则会发生类型不匹配”的错误。
4.函数调用中发生的数据传送是单向的。即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化。
实参的形参例子:
void main()/*计算两数相加*/
{
int a=5,b=4,c;
int add(int m,int n);/*对函数进行声明*/
c=add(a,b);/*函数调用*/
printf("%d",c);/*输出结果*/
getchar();
}
int add(int m,int n)
{
int sum;
sum=m+n;/*计算两数相加*/
return sum;/*返回函数值*/
}
程序说明;
程序中定义了一个“ int add(int m,int n) ”函数,函数有两个形参,定义返回类型为整型。参数是用来传递值用的。定义函数时在括号中定义的变量叫形参(形式参数),如“int add(int m,int n)”里面的“m”和“n”,在调用函数时提供给函数的变量叫实参(实际参数),如“c=add(a,b);”里的“a”和“b”,当调用函数时,程序将 a 的值传递给 m(m=a),将 b 的值传递给 n (n=b),然后运行函数add(),即将 m 和 n 两数相加并赋值给 sum 。然后返回sum 的值给 C 。
函数是用来完成一些功能的程序段,所以函数执行完之后要有所作用,要么就完成输入、输出等动作,要么就进行一些计算,所以要求它执行完之后能得到一些结果,而结果就用返回值来得到(return 语句),返回的结果的数据可能是整型,可能是字符型…这就需要你来定义(如上面的 add() 函数被我定义为整型,因为我要得到的值是整型——变量"c"为整型),这就是函数的返回类型。return 语句中的变量(sum)的类型必须和你定义的返回类型(int add(int m,int n)
)一至。