过程中的参数列表叫做形参 。
调用过程时的参数列表就实参。
形参与实参的类型必须一致。
调用时将实参的值传递给形参。
Private sub command1_click()
Dim a as long ,dim b as long
a= 20
b = 30
call myfunc(a,b)
Print a,b
End sub
Private sub myfunc(byref x as long,byref y as long )
x=x*2
y =y*2
End sub
上面的 x ,y 就是形参 , 而a,b就是实参
ByVal(按值传递) 传值时先给形参开辟一个临时地址,将实参的内容传入这个临时地址,这样,传递后,形参与实参是在两上不同的地址中,也就是说他们是相互独立的
传址时(ByRef),是直接将实参的地址传递给形参,这样,形参与实参就共用一个地址,所以,形参内容的改变,也直接改变了实参的内容
做个比喻,
a,b比喻成两个杯子,分别装30、20升水,我们定义的过程s1,比喻为机器,机器功能是可以使杯子水变成原来的2倍,Call s1(a, b)相当于启动机器,a,x虽然名字不一样,但是在计算机内存里,就是一个东西(因byref),就是装30升水的那个杯子,“加工”后,变成60升;再看b杯子,b没有放入机器加工,而是机器生产出一个和b一样的杯子c,也装20升水(完全模仿b),放入机器加工的是c,c加工完后是40升,但b还是20升;过程s1执行完了,c杯子就消失了(作用域),并没有把其中的水传回给b