51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1436|回复: 4
打印 上一主题 下一主题

[原创] 传递值还是传递引用?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2009-10-12 18:02:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
看下面的两段代码:
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中运行一下!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2009-10-12 19:10:08 | 只看该作者
传引用传递的是指针地址

而传值则不是

这只是一种通用的解释,对不同语言来说,其内部实现都略有不同。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2009-10-12 19:19:35 | 只看该作者
这里和传值传递还是引用传递没太大关系,只是局部变量和全局变量的优先级问题。
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
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2009-10-12 21:04:02 | 只看该作者
嗯...LS说的不错,LZ的例子确实也涉及到了变量作用域的问题

而且LZ你想说啥?是求助帖还是想说明什么问题?
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2009-10-13 11:27:27 | 只看该作者
LZ的例子与局部变量还是全局变量没有一点关系,3楼给的例子也只是与参数传递方式有关。。。

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)
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-9-20 05:18 , Processed in 0.073990 second(s), 29 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表