若有以下两个过程: 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

admin2021-07-08  31

问题 若有以下两个过程:
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项),则过程调用只是相应位置实参的值"单向"传送给形参处理,而被调用过程内部对形参的任何操作引起的形参值的变化均不会反馈、影响实参的值。由于这个过程,数据的传递只是单向性,故称为"传值调用"的"单向"作用形式。反之,如果形式参数被说明为传址(ByRef项),则过程调用是将相应位置实参的地址传送给形参处理,而被调用过程内部对形参的任何操作引起的形参值的变化又会反向影响实参的值。在这个过程中,数据的传递具有双向性,故称为"传址调用"的"双向"作用形式。在过程定义时,如果未做参数说明,则默认为传址调用。本题过程S1采用的是传值的方式,当然无法实现交换两个变量的值的操作。过程S2形式参数未说明,则默认采用的是传址的方式,可以实现两个变量的值的交换操作。所以本题答案是选项B。
转载请注明原文地址:https://kaotiyun.com/show/OFvp777K
0

最新回复(0)