首页 理论教育 函数参数传递的实现方法

函数参数传递的实现方法

时间:2023-11-16 理论教育 版权反馈
【摘要】:函数在被调用时,由主调程序提供实参,将数据传递给形参;在调用结束后,有时形参可以返回新的数据给主调程序。实现参数传递的方法通常分为传值和传址两大类。在主函数两次调用函数sum()时,带入的实参均是两个整型变量。实践证明x,y 的值在调用函数前后发生了交换变化。在函数体内交换的是实参地址中的内容,而作为主函数变量x,y的地址仍然没有改变。从整数交换的角度看,本例题实现了双向数据传递。

函数参数传递的实现方法

函数在被调用时,由主调程序提供实参,将数据传递给形参;在调用结束后,有时形参可以返回新的数据给主调程序。这就是函数的参数传递。实现参数传递的方法通常分为传值和传址两大类。

在上例中,函数sum()的设计和主函数对它的调用,就是传值调用。在主函数两次调用函数sum()时,带入的实参均是两个整型变量。调用函数返回后,在主函数中输出实参的值仍与调用之前相同。传值调用的主要特点是数据的单向传递,由实参通过形参将数据代入被调用函数,不论在调用期间形参值是否改变,调用结束返回主调函数之后,实参值都不会改变。

在不同的算法语言中,传址调用的语法有所不同。在C语言中采用指针变量做形参来实现传址。传址调用的主要特点是可以实现数据双向传递,在调用时实参将地址传给形参,该地址中的数据代入被调用函数。如果在调用期间形参值被改变,也即该地址中的数据发生变化,调用结束返回主调函数之后,实参地址仍然不变,但是该地址中的数据发生相应改变。这就是数据的双向传递。(www.xing528.com)

例1.2:设计一个函数实现两个数据的交换,在主程序中调用。

实践证明x,y 的值在调用函数前后发生了交换变化。形参是指向整型的指针变量a和b,在函数体内需要交换的是指针所指的存储单元的内容,因此使用*a=*b;这样的写法。在调用时,要求实参个数、类型位置与形参一致。因为实参是指针地址,所以调用语句swap(&x,&y)时,实参&x和& y代入的是整型变量x,y的地址。在函数体内交换的是实参地址中的内容,而作为主函数变量x,y的地址仍然没有改变。从整数交换的角度看,本例题实现了双向数据传递。若从指针地址角度看,调用前后指针地址不变。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈