5.2.5 函数的参数
在函数调用的过程中,两个函数之间的数据传递是通过参数和返回值传递的,主调函数利用参数将数据传给被调函数,被调函数的运行结果通过返回值返回到主调函数。在调用函数时,函数名后面括号中的数据称为实际参数(简称实参),在定义函数时函数名后面的括号中的变量称为形式参数(简称形参)。
例如:
说明:
①形参在被调函数中出现,实参在主调函数中出现。
②形参是在函数被调用时临时分配存储单元的,一旦调用结束,形参所占的存储单元立即被释放。
③实参可以是常量、变量或表达式,但必须是确定的值;形参必须是变量。实参是函数在调用刚开始时传递的具体数据,必须是确定的值;形参是用来接收数据的,对应内存中某个存储空间,因此,形参必须是变量。
④在定义函数时,必须指定形参类型。形参实际上就是定义的变量,如果不指定变量的类型,将无法分配内存单元。
⑤实参传递给形参的实际数据必须与函数定义中的形参类型一致。
⑥函数调用语句中的实参个数应与被调用函数的形参个数相等,其类型、顺序必须一一对应。
⑦实参和形参在内存里分别占用不同的存储空间,即使同名也不会相互影响。
⑧ C语言规定:实参对形参的传递是单向值传递,只能由实参传给形参,不能由形参传给实参。
例5.5
程序如下:
程序运行结果如下:
分析:当程序开始执行函数调用语句c=f(a,b);时,系统首先为形参x、y分配临时的存储单元,并通过“数据传递通道”将a的值2传递给形参x,将b的值3传递给形参y,如图5-3所示。数据传递只是瞬间,一旦数据传递完毕,a和b,x和y之间的“数据传递通道”断开。然后开始执行被调函数,形参x、y的值随之发生变化,分别为2和4,如图5-4所示。当被调函数执行完毕后,形参x和y所占的临时存储单元均被释放,但主调函数里的实参a 和b的值不变,仍为2和3。
图5-3
图5-4
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。