C语言由几个相对独立的函数组成,每个函数所执行的功能不同,但由于它们处理的数据可能是同一批次的数据,因此在编程中存在数据在函数之间传输的问题。
1函数调用时,参数的交接以实参的形式进行
1.1传递函数调用
函数调用的传价也称为传价调用。 在传送值时,实参可以是常数,但也可以是已经被代入的变量或公式,甚至是其他的函数。 如果所传递的参考具有一定的值,则被传递作为参考,并且可以初始化参考。
传值调用的机制是,系统向参数传递实际参数的副本,调用函数时,系统为参数分配内存空间,将对应的实际参数的值传递给参数,从而实现复制到内存空间的实际参数
在被调用函数中,形状参数的更改仅影响副本中的参数值,而不影响被调用函数中的实际参数值,因此,“传递值调用”的特殊形状参数值不会影响实际参数值。
函数调用的传值常用于在:函数不需要检索多个结果值且参数具有基本数据类型时通过传值调用函数。
1.2函数调用时采用地址传递值
采用地址传递值是将数据的存储地址作为函数的参数传递,而不是将数据本身传递给函数。
此格式以变量的地址作为参数调用函数。 被调用函数的格式参数是接受地址值的指针变量,数据类型必须与传递的数据的数据类型相同。 此时,将变量的地址传递给被调用函数,被调用函数通过该地址的该变量的存储位置,直接操作该存储位置中的变量的内容,从而可以直接操作“传递的参数的值”。
如果希望形状参数的更改影响实际参数,也就是说在返回函数时需要一些结果值,则必须采用地址传递方法。
例:
#include “stdio.h”
voidsum (浮动、浮动、浮动*; //函数声明
int main ()。
浮动a1、a2;
浮动全部;
printf (“请输入两个浮点数:n”
scanf(「%f,%f”,a1,a2 );
sum(a1、a2、a1All ); //函数传递值
printf(「%f%f=%fn”,a1,a2,a1All );
}
voidsum(float_a1、float _a2、float *_a1All ) ) ) ) ) )。
{
*_a1All=_a1 _a2;
返回;
}
[root@localhost ~]#./t
请输入两个浮点数:
1.2、5.6
1.200000 5.600000=6.800000
2使用返回值传递参数
调用函数时,可以将值返回给原始函数,返回值由函数中的return语句返回。
return语句函数中的主要功能: 1将结果值2返回给调用函数,并根据调用函数的返回值调用程序控制函数。
使用return语句只能传递给调用函数的一个返回值。 如果需要返回多个值,则必须采用函数调用时的地址传递方法,而不是return返回值的方法。
3使用全局变量传递参数
通过定义在函数外部且在函数中可见的变量,然后在函数中直接操作全局变量来获得传递值的效果。