Private Sub Command1_Click() Dim x As Integer, y As Integer x = 12: y = 32 Call P(x, y) MsgBox x*y End Sub Public Sub P(n As Integer, ByVal m As Integer) n = n Mod l0 m = m Mod l0 End Sub 窗体打开运行后,单击命令按钮,则消息框的输出结果为__【11】__。 关键是为什么?
结果:64 这是一个很老的题目,就是函数在传递参数时候的2种方式。 ByVal就是值的传递。就是把Y的值12给变量m,m的改变与Y没有任何关系,虽然M=M mod 10=2,但是Y还是32. 而默认的是传地址(引用),后面的n和X都是指向的内存里的同一个位置,这样n如果改变的话,X也就变了。所以n Mod 10=2 这句话后X就等于2了。 完整的应该是: Public Sub p (ByRef n As Integer,ByVal m As Integer) …… End Sub