设有以下两个过程: Sub S1(a As Integer,b As Integer) t=a a=b b=t End Sub Sub S2(ByVal a As Integer,ByVal b As Integer) t=a a=b b=t End Su

admin2013-01-07  30

问题 设有以下两个过程:
Sub S1(a As Integer,b As Integer)
t=a
a=b
b=t
End Sub
Sub S2(ByVal a As Integer,ByVal b As Integer)
t=a
a=b
b=t
End Sub
下列说法中正确的是(    )。

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

答案A

解析 在vBA的过程调用时,参数有两种传递方式;传址传递和传值传递。如果在过程声明时形参用ByVal声明,说明此时参数为传值调用;若形参用ByRef声明,说明此时参数为传址调用,即形参的结果会传递给实参。本题中S1的过程为传址调用,所以S1中交换的两个形参会影响到实参,可以实现实参的交换。S2过程为传值调用,S2中交换的两个形参不会影响到实参,也就不能实现实参的交换。
转载请注明原文地址:https://jikaoti.com/ti/jDw0FFFM
0

最新回复(0)