欢迎来到天天文库
浏览记录
ID:20333255
大小:56.01 KB
页数:7页
时间:2018-10-10
《vb过程间参数的传递》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、一、 形式参数与实际参数1形式参数:就是在定义函数或过程的时候命名的参数。通俗讲就是一个记号。2实际参数:就是在执行时,调用函数或过程时,传递给函数或过程的参数。通俗讲就是实际值。3参数嘛,就是一个可变量,它随着使用者的不同而发生变化。举个例子,在中学的时候学过sin(x)函数,这里的x就是形式参数,当你需要求1的正弦值时,你会使用sin(1),这里的1就是实际参数。4形参和实参间的关系:两者是在调用的时候进行结合的,通常实参会将取值传递给形参,形参去之后进行函数过程运算,然后可能将某些值经过参数或函数符号返回给调用者。在过程之间传递参数,形式参数和实际参数
2、是很重要的概念。我们通常说形式参数是过程为了运行的需要预先在内存中保留的地址单元,而实际参数就是在调用过程时放入这些内存地址中进行处理的数据。如果形式参数是一个盒子,那么实际参数就是盒子里面装的东西。在参数传递的过程中,形式参数和实际参数的数据类型要一致。二、 参数传递函数参数的传递方式有两种,一种是按地址传递,一种是按值传递。按地址传递:调用函数时,不直接把实参的值“告诉”函数,而是把地址“告诉”它,函数根据这个地址来寻找并处理值,如果函数修改了这个值,也就修改了这个地址对应的值。按值传递:把值复制一份再给函数,这个值只属于函数,函数对这个值的修改不影响原
3、值。VBScript中,要按地址传递可在形参前加ByRef,要按值传递得在形参前加 ByVal,如果什么也不加则表示按地址传递。1) 按值传递如果在声明过程时,形式参数名前面加上关键字“ByVal”,即规定了在调用此过程时该参数是按值传递的。按值传递参数时,传递的只是变量的副本。如果过程改变了这个值,则所做的改动只影响副本而不会影响变量本身。 代码1**********************************PrivateSubCommand1_Click()Dimnum1AsIntegernum1=5Printnum1CallMySub(num1)Print
4、num1'输出结果为5CallMySub2(num1)Printnum1'输出结果仍为5EndSubPrivateSubMySub(ByValAAsInteger)A=10EndSubPrivateSubMySub2(ByValAAsString)A="abc"EndSub**********************************如果过程中的形式参数设定为按值传递,就不要求调用时相应实参数的类型必须与其一致,只要实参数的值能够转换为形参的类型即可。代码2**********************************PrivateSubCommand1_Click(
5、)Dimnum1AsIntegernum1=5Printnum1CallMySub2(num1)Printnum1'输出结果仍为5EndSub PrivateSubMySub2(ByValAAsString)A="abc"EndSub********************************** 2) 按地址传递参数按地址传递参数时,过程用变量的内存地址去访问实际变量的内容,将结果的变量传递给过程时,通用过程可永远改变该变量值。ByRef是VisualBasic的缺省选项。如果指定按地址传递参数的数据类型,就必须将这种类型的值传给参数,即如果过程中的形式参数设
6、定为按地址传递,就必须要求调用时相应实参数的类型必须与其一致。按地址传递参数时,传递给所调用过程的形参实际是实参的地址。如果过程改变了这个值,则所做的变动也会影响实参变量本身 代码3******************************************PrivateSubCommand1_Click()Dimnum1AsIntegernum1=5Printnum1CallMySubByRef(num1)Printnum1'输出结果为10CallMySubByRef2(num1)Printnum1'默认情况,输出结果仍为10EndSub PrivateSubMySu
7、bByRef(ByRefAAsInteger)A=10EndSubPrivateSubMySubByRef2(AAsInteger)A=10EndSub******************************************3) 二者比较ByVal传送参数内存的一个拷贝给被调用者。也就是说,栈中压入的直接就是所传的值。ByRef传送参数内存的实际地址给被调用者。也就是说,栈中压入的是实际内容的地址。被调用者可以直接更改该地址中的内容。ByVal可选的。表示
此文档下载收益归作者所有