假定有以下两个过程: Sub sl(ByVal x As Integer,ByVal y As Integer) Dim t As Integer t=x X=y y=t End Sub Sub S2

admin2019-08-21  37

问题 假定有以下两个过程:
    Sub sl(ByVal x As Integer,ByVal y As Integer)
    Dim t As Integer
    t=x
    X=y
    y=t
    End Sub
    Sub S2(x As Integer,y As Integer)   
    Dim t As Integer
    t=x:x=y:y=t   
    End Sub
下列说法正确的是(    )。

选项 A、用过程Sl可以实现交换两个变量的值的操作,S2不能实现
B、用过程S2可以实现交换两个变量的值的操作,Sl不能实现
C、用过程S1和S2都可以实现交换两个变量的值的操作
D、用过程S1和S2都不可以实现交换两个变量的值的操作

答案B

解析 VBA中定义过程时如果省略传值方式则默认为按地址传递,过程S2中省略了参数传递方式说明,因此,参数将按传址调用,而过程S1由于声明为按值传递(ByVal),所以会按传值调用参数。而在过程调用时,如果按传值调用,实参只是把值传给了形参,在过程内部对形参值进行改变不会影响实参变量,按址调用却不同,这种方式是把实参的地址传给了形参,在过程中对形参值进行改变也会影响实参的值。因此,过程S2能够交换两个变量的值,而s1不能实现。故选择B选项。
转载请注明原文地址:https://kaotiyun.com/show/uu0p777K
0

最新回复(0)