参数传递

更新时间:2024-07-19 22:46

参数传递,是在程序运行过程中,实际参数就会将参数值传递给相应的形式参数,然后在函数中实现对数据处理和返回的过程,方法有按值传递参数,按地址传递参数和按数组传递参数。

定义

形参:指出现在Sub 和Function过程形参表中的变量名、数组名,该过程在被调用前,没有为它们分配内存,其作用是说明自变量的类型和形态以及在过程中的作用。形参可以是除定长字符串变量之外的合法变量名,也可以带括号的数组名。

实参:实参就是在调用Sub 和Function过程时,从主调过程传递给被调用过程的参数值。实参可以是变量名、数组名、常数或表达式。在过程调用传递参数时,形参与实参是按位置结合的,形参表和实参表中对应的变量名可以不必相同,但它们的数据类型、参数个数及位置必须一一对应。

两者关系:

1. 形参只能是变量,实参可以是常量、变量或表达式。在被定义的函数中,必须指定形参的类型。

2. 实参与形参的个数应一样,类型应一致。字符型和整型可以互相通用。

3. 在调用函数时,如果实参是数组名,则传递给形参的是数组的首地址

4.实参传递给形参是单向传递,形参变量在未出现函数调用时,并不占用内存,只在调用时才占用。调用结束后,将释放内存。执行一个被调用函数时,形参的值如果发生改变,并不会改变主调函数中的实参的值。

5.形参如同公式中的符号,实参就是符号具体的值,在调用过程前必须得到赋值;调用过程就是实现形参与实参的结合,把实参的值通过调用传递给形参,相当于把值代入公式进行计算。

方法

按值传递参数

按值传递参数时,是将实参变量的值复制一个到临时存储单元

按地址传递参数

按地址传递参数时,把实参变量的地址传送给被调用过程,形参实参共用内存的同一地址。在被调用过程中,形参的值一旦改变,相应实参的值也跟着改变。如果实参是一个常数或表达式,Visual Basic 6.0关键字

按数组传递参数

在VB6.0中,允许使用数组作为实参传递到子过程的形参中,数组传递必须采用地址传递的方式来传递参数。数组参数在传递时应注意以下两个方面:

① 在实参和形参列表中只写数组名,忽略维数的定义,但圆括号不能省,当数组作为参数传递时,系统将实参数组的起始地址传给过程,使形参数组也具有与实参数组相同的起始地址,若参数是多维数组,每维以逗号分隔;

② 被调过程可分别通过LboundUbound函数确定实参数组的下界上界

调用带参数的函数

在调用函数时,您可以向其传递值,这些值被称为参数。

这些参数可以在函数中使用。

您可以发送任意多的参数,由逗号 (,) 分隔:

myFunction(argument1,argument2)

当您声明函数时,请把参数作为变量来声明:

function myFunction(var1,var2){这里是要执行的代码}

变量和参数必须以一致的顺序出现。第一个变量就是第一个被传递的参数的给定的值,以此类推。

实例

对于下述程序,试分析用传值、传地址、传数组方法传递参数时所得的打印结果。

PROGRAM SS(input,output);

VAR

A,B:integer;

PROCEDURE P(x,y,z:integer);

begin y:=y+1;z:=z+x;

end;

BEGIN

A:=2;b:=3;

P(A+B,A,A);

writeln (‘A=‘,A);

END

解答

(1)传值:把实参的值计算出来传给形参。

在调用过程P时,形参x=5;y=2;z=2

出过程P时,形参x=5;y=3;z=7

这并不把结果回送到主程序,所以结果为A=2

(2)传地址:实参计算出结果,把地址送形参。

设变量T=A+B(结果为5)。执行时把T、A、A的

地址(设为addr1,addr2,addr2)送给形参:

x=daar1,y=addr2,z=addr2。

T的地址addr1即x→T(5)

A的地址addr2即y→A(2)

A的地址addr2即z→A(2)

执行过程P即为:①y↑:=y↑+1;②z↑:=z↑+x↑

所以,①为A:=A+1=3

②为A:=A+T=8。 因此,最后A=8.

(3)传数组:相当于执行 A:=2;B:=3; A:=A+1;A:=A+(A+B)

writeln(‘A=‘,A);

所以,结果为A=9。

免责声明
隐私政策
用户协议
目录 22
0{{catalogNumber[index]}}. {{item.title}}
{{item.title}}