标题: 传递值还是传递引用? [打印本页] 作者: li5tun 时间: 2009-10-12 18:02 标题: 传递值还是传递引用? 看下面的两段代码:
A、参数通过引用传递
Function learnqtp( ByRef var)
myname= "li5tun"
msgbox var
msgbox myname
End Function
myname= "LI5TUN"
call learnqtp (myname)
B、参数通过值传递
Function learnqtp( ByVal var)
myname= "jain"
msgbox var
msgbox myname
End Function
myname= "ankur"
call learnqtp (myname)
代码A、代码B的输出分别是什么?为什么会是这样?实在想不起来就在QTP中运行一下!作者: shanxi 时间: 2009-10-12 19:10
传引用传递的是指针地址
而传值则不是
这只是一种通用的解释,对不同语言来说,其内部实现都略有不同。作者: Haereticus 时间: 2009-10-12 19:19
这里和传值传递还是引用传递没太大关系,只是局部变量和全局变量的优先级问题。
Function Swap(ByVal a,ByVal b)
Dim Temp
Temp = a
a = b
b = Temp
End Function
Function Swap(ByRef a,ByRef b)
Dim Temp
Temp = a
a = b
b = Temp
End Function
a = 1
b =2
Swap a,b
msgbox a
msgbox b作者: dabeixiong 时间: 2009-10-12 21:04
嗯...LS说的不错,LZ的例子确实也涉及到了变量作用域的问题
Function learnqtp( ByRef var)
myname= "li5tun"
MsgBox var '此处var会动态读取传入参数myname的值,并且对var的修改会实时影响到myname的值
MsgBox myname
var = "zoey"
MsgBox myname
End Function
myname= "LI5TUN"
Call learnqtp (myname)
Function learnqtp1( ByVal var)
myname= "jain"
MsgBox var '此处var为传入时的myname的值,并且对var的修改不会影响到myname的值
MsgBox myname
var = "Sally"
MsgBox myname
End Function
myname= "ankur"
Call learnqtp1 (myname)