问题 填空题

设有如下程序:
Private Sub Form_Click()
Dim a As Integer,b As Intger
a=20:b=50
p1 a,b
p2 a,b
p3 a,b
Print"a=";a,"b=";b
End Sub
Sub p1(x As Integer,ByVal y As Integer)
x=x+10
y=y+20
End Sub
Sub p2(ByVal x As Integer,y As Integer)
x=x+10
y=y+20
End Sub
Sub p3(ByVal x As Integer,ByVal y As Integer)
x=x+10
y=y+20
End Sub
该程序运行后,单击窗体,则在窗体上显示的内容是:a= 【14】 和b= 【15】

答案

参考答案:[14] 30
[15] 70

解析: 本题考查了参数的虚实结合的传送方式。用虚实结合的方式,实现调用程序和被调用过程之间的数据传送。传送方式有两种:按值传送和按址传送。按值传送:Call语句中的实际参数是常量或表达式时表示按值传送。若要求变量按值传送,可以把变量用括号括起来,使之成为一个表达式。例如,实际参数写成(a),则(a)表示一个表达式,表示按值传送。在过程的定义语句中使用ByVal关键字指定形式(虚拟)参数,也表示按值传送参数。
按址传送:Call语句中的实际参数是变量时,表示是按地址传送参数。
理解了以上知识点后我们再来分析本题。题中的三个过程p1中x为传址方式,y为传值方式;p2中x为传值方式,y为传址方式;p3中x和y都为传值方式。特别要注意的是在传值调用时不影响实际参数,传址调用时影响实际参数。故在调用了三个过程后,a只在p1过程中受到了影响b只在p2过程中受到了影响。在p1中执行的语句a=a+10使a的值变为30。在p2中执行的语句b=b+20使b的值变为70。

单项选择题
单项选择题