函数参数传递的原理.doc
《函数参数传递的原理.doc》由会员分享,可在线阅读,更多相关《函数参数传递的原理.doc(2页珍藏版)》请在三一文库上搜索。
1、函数参数传递的原理参数传递,是在程序运行过程中,实际参数就会将参数值传递给相应的形式参数,然后在函数中实现对数据处理和返回的过程,方法有按值传递参数,按地址传递参数和按数组传递参数。形参:指出现在Sub 和Function过程形参表中的变量名、数组名,该过程在被调用前,没有为它们分配内存,其作用是说明自变量的类型和形态以及在过程中的作用。形参可以是除定长字符串变量之外的合法变量名,也可以带括号的数组名。实参:实参就是在调用Sub 和Function过程时,从主调过程传递给被调用过程的参数值。实参可以是变量名、数组名、常数或表达式。在过程调用传递参数时,形参与实参是按位置结合的,形参表和实参表中
2、对应的变量名可以不必相同,但它们的数据类型、参数个数及位置必须一一对应。等号、函数名称、括弧和参数,是函数的四个组成部分。函数“=SUM(1,2,3)”,1、2和3就是SUM函数的参数,没有参数1、2、3,函数SUM则无从求值。函数“=VLOOKUP(2,A:C,3,)”,没有参数2、A:C和3,函数VLOOKUP如何在A:C区域查找A列中是2那一行第3列的数值?当然,也有不需要参数的函数,如“=PI()”、“=NOW()”、“TODAY()”等。函数参数传递的原理C语言中参数的传递方式一般存在两种方式:一种是通过栈的形式传递,另一种是通过寄存器的方式传递的。这次,我们只是详细描述一下第一种参
3、数传递方式,另外一种方式在这里不做详细介绍。首先,我们看一下,下面一个简单的调用例程:int Add (int a, int b, int c)return a+b+c;void main()int x =0 , y = 1, z = 2;int result = 0;result = Add(x, y, z);printf(“Result for x+y+z %d”, result);借助以上例程,我们具体看一下,参数是如何传递的。首先,我们了解一个知识点,就是“()”操作符在C语言中有很多含义,比如说,结合符、函数调用符等。那么在result = Add(x,y,z)语句中当然为函数调用符,因此在编译阶段,遇到函数调用符后的执行序为,从最后一个参数开始压栈,压栈顺序为z-y-x, 直到将全部的参数压到调用栈中,然后call到Add对应的函数地址开始执行。那么压栈执行完成后,栈空间,从上到下依次的顺序为x-y-z(因为栈的生长方向为向上,即地址低的地方,因此,x在地址最低的地方,即栈顶)。因此,在被调用函数中参数的读取和操作也都是发生在栈中的。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 函数 参数 传递 原理
链接地址:https://www.31doc.com/p-3392808.html