8.3 参数传送

图8-3 a数组与p数组具有相同的起始地址
| 8.3.2 数组参数的传送
举例说明数组参数的传送过程。 例如,假定定义了如下过程:
Sub S(a( ),b( ))
…
End Sub
可以用下面的语句调用该过程:
Call S(p( ),q( ))
【例8.6】编写一个Function过程,求数组的最大值。
8.4 可选参数与可变参数
8.4.1 可选参数
举例说明使用Optional关键字,定义带可选参数的过程,并在过程体中通过IsMissing函数测试调用时是否传送可选参数。
Sub Multi(fir As Integer, sec As Integer, Optional third)
n=fir*sec
If Not IsMissing(third) Then
n=n*third
End If
Print n
End Sub
在调用上面的过程时,可以提供两个参数,也可以提供3个参数,都能得到正确的结果。例如,如果用下面的事件过程调用:
Private Sub Form_Click()
Multi 10,20
End Sub
则结果为200,而如果用下面的过程调用:
Private Sub Form_Click()
Multi 10,20,30
End Sub
则结果为6000
上面的过程只有一个可选参数,也可以有两个或多个。但应注意,可选参数必须放在参数表的最后,而且必须是Variant类型。
8.4.2 可变参数
1.可变参数定义
可变参数过程通过ParamArray命令来定义,一般格式为:
Sub过程名(ParamArray 数组名)
2.举例说明可变参数过程的用法
Sub Multi (ParamArray Numbers( ))
n=1
For Each x In Numbers
n=n*x
Next x
Print n
End Sub
Private Sub Form_Click()
Multi 2,3,4,5,6
End Sub
8.5 对 象 参 数
用对象作为参数与用其他数据类型作为参数的过程没有什么区别,其格式为
Sub过程名(形参表)
语句块
[Exit Sub]
End Sub
“形参表”中形参的类型通常为Control或Form。注意,在调用含有对象的过程时,对象只能通过传地址方式传送。因此在定义过程时,不能在其参数前加关键字ByVal。
8.5.1 窗体参数
下面通过一个例子来说明窗体参数的使用。
【例8.7】假定要设计一个含有多个窗体的程序,该程序有4个窗体,要求这4个窗体的位置、大小都相同。
8.5.2 控件参数
和窗体参数一样,控件也可以作为通用过程的参数,即在一个通用过程中设置相同性质控件所需要的属性,然后用不同的控件调用此过程。
【例8.8】编写一个通用过程,在过程中设置字体属性,并调用该过程显示指定的信息。
小结:
Visual Basic6.0提供了十分灵活的、安全的参数传送方式,允许使用可选参数和可变参数。在调用一个过程时,可以向过程传送可选的参数或者任意数量的参数。Visual Basic还允许用对象,即窗体或控件作为通用过程的参数。在有些情况下,这可以简化程序设计,提高效率。实际上,在Visual Basic中,还可以向过程传送对象,包括窗体和控件。
本讲重点介绍过程调用的参数传递机制及一些特殊的参数。
作业:
1.如果形参是数组,调用时实参是否一定要求使用数组?
2.在定义函数过程时,函数名在函数中可以当简单变量一样使用吗?
|