问题 单项选择题

假定有以下两个过程:

SubS1(ByValxAsInteger,ByValyAsInteger)

DimtAsInteger

t=x

x=y

y=t

EndSub

SubS2(xAsInteger,yAsInteger)

DimtAsInteger

t=x

x=y

y=t

EndSub

则以下说法中正确的是()

A.用过程S1可以实现交换两个变量的值的操作,S2不能实现

B.用过程S2可以实现交换两个变量的值的操作,S1不能实现

C.用过程S1和S2都可以实现交换两个变量的值的操作

D.用过程S1和S2都不能实现交换两个变量的值的操作

答案

参考答案:B

解析:

模块/VBA程序设计基础

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

单项选择题 A1/A2型题
单项选择题