首页 理论教育C语言函数参数传递方法

C语言函数参数传递方法

【摘要】:图5.3程序运行结果说明:定义函数时指定的形参变量在未出现函数调用时,并不占用内存的存储单元。图5.4程序运行结果说明:程序中实参与形参同名,但两者的作用范围不同,程序开始执行时,为主函数中的变量n分配存储空间,实参n 在主函数main()中有效;主函数调用函数s(),有效的是形参n。程序的运行结果表明,当函数调用时,实参的值传送给形参,在被调函数内部,形参的变化不会影响实参的值。

1.实参到形参的数据传送

形参出现在函数定义中,只能在该函数体内使用。函数调用时,调用函数把实参的值传送给被调用函数的形参,在被调用函数执行时对实参进行处理。

【例5.4】求三个数的最大值。

程序运行结果如图5.3 所示。

图5.3 程序运行结果

说明:

(1)定义函数时指定的形参变量在未出现函数调用时,并不占用内存的存储单元。只在函数调用时形参才被分配内存单元。调用结束后,形参所占内存单元被释放。

(2)在C 语言中,实参变量对形参变量的数据传递是“值传送”,且单向传送,即由实参传送给形参,而不能相反传送。

(3)ANSI 新标准允许使用另一种方法对形参类型做说明,即在列出“形参表列”时,同时说明形参类型。譬如,int max(int x,int y)。

(4)一个函数可以被多次调用。

2.函数返回值

通常希望通过函数调用得到一个确定的值,这就是函数的返回值。函数返回值通过函数中的return 语句获取,返回主调函数。return 语句格式:(www.chuimin.cn)

或者

该语句的功能是计算表达式的值,返回给主调函数。在函数中允许有多个 return 语句,但每次调用只能有一个return 语句被执行,因此只能返回一个函数值。

【例5.5】编写函数,求累加和。

程序运行结果如图5.4 所示。

图5.4 程序运行结果

说明:程序中实参与形参同名,但两者的作用范围不同,程序开始执行时,为主函数中的变量n分配存储空间,实参n 在主函数main()中有效;主函数调用函数s(),有效的是形参n。调用结束,回到主函数继续执行,此时形参n 的存储空间释放,主函数中作为实参的变量n 继续有效。由此可得出以下结论:

(1)形参在被调函数中定义,实参在主调函数中定义。形参定义时编译系统并不为其分配存储空间,也无初值,只有函数调用时,临时分配存储空间,接收实参的值,函数调用结束,内存空间释放,值消失。

(2)程序的运行结果表明,当函数调用时,实参的值传送给形参,在被调函数内部,形参的变化不会影响实参的值。