单选题 假定有以下两个过程:
Sub S1 (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.用过程S1可以实现交换两个变量的值的操作,S2不能实现
B.用过程S2可以实现交换两个变量的值的操作,S1不能实现
C.用过程S1和S2都可以实现交换两个变量的值的操作
D.用过程S1和S2都不能实现交换两个变量的值的操作

【正确答案】 B
【答案解析】过程定义时,如果形式参数被说明为传值(ByVal项),则过程调用只是相应位置实参的值“单向”传送给形参处理,而被调用过程内部对形参的任何操作引起的形参值的变化均不会反馈、影响实参的值。在这个过程中,数据的传递具有单向性,故称为“传值调用”的“单向”作用形式。反之,如果形式参数被说明为传址(BvRef项),则过程调用是将相应位置实参的地址传送给形参处理,而被调用过程内部对形参的任何操作引起的形参值的变化又会反向影响实参的值。在这个过程中,数据的传递具有双向性,故称为“传址调用”的“双向”作用形式。在过程定义时,如果未做参数说明,则默认为传址调用。所以,本题过程S1采用的是传值的方式,当然无法实现交换两个变量的值的操作;过程S2形式参数未说明,则默认采用的是传址的方式,则可以实现两个变量的值的交换操作。