51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2307|回复: 10
打印 上一主题 下一主题

[原创] ByVal与ByRef

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-8-21 17:44:11 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
pa = 1
Fun(pa)
msgbox pa,,"pa"

Function Fun(byRef para)
        para = para +1
       msgbox para,,"para"
End Function


本以为pa的值将会变为2,可是结果没有。。。
pa的值都没变。
ByVal与ByRef运行结果相同!错在哪里吖?
那要如何才能实现按地址传递呢?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

  • TA的每日心情
    奋斗
    2022-7-13 15:22
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    11#
    发表于 2007-8-22 09:50:00 | 只看该作者
    调用函数时,参数传递有“传值”和“传地址”之分
    原来这里有类似的
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2015-3-12 14:20
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    10#
    发表于 2007-8-22 09:45:05 | 只看该作者
    原帖由 yabest 于 2007-8-21 22:50 发表


    说的不够全面!

    需要将参数括起来的情况包括:
    1、call FuncName(a)   ‘用 Call
    2、ret = FuncName(a) '返回值付给变量
    3、if FuncName(a) > 0 then '返回值参与比较

    不需要将参数括起来的情况
    ...


    恩,总结的很全面
    我再总结下
    就是用call 的时候要加括弧
    还有就是要取他的返回值的时候要用括弧
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
     楼主| 发表于 2007-8-22 09:21:42 | 只看该作者
    以前还真没注意到这些!只以为script语言没那么严格,随便拿来就用。学习了!谢谢各位的回答!sdlkfj3
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    8#
    发表于 2007-8-22 00:38:57 | 只看该作者
    如果有开发经验,就很容易明白这些了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
    发表于 2007-8-21 22:50:19 | 只看该作者
    原帖由 xuehuiyiwang 于 2007-8-21 22:16 发表
    我的理解是: 对于function来说,如果要用call,则必须将参数扩起来; 如果不用call,则一定不能将参数扩起来。所有lz的调用语句:
    Fun(pa)
    是不合法的。


    说的不够全面!

    需要将参数括起来的情况包括:
    1、call FuncName(a)   ‘用 Call
    2、ret = FuncName(a) '返回值付给变量
    3、if FuncName(a) > 0 then '返回值参与比较

    不需要将参数括起来的情况
    FuncName a
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
    发表于 2007-8-21 22:16:33 | 只看该作者
    我的理解是: 对于function来说,如果要用call,则必须将参数扩起来; 如果不用call,则一定不能将参数扩起来。所有lz的调用语句:
    Fun(pa)
    是不合法的。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
    发表于 2007-8-21 18:55:27 | 只看该作者
    好像byref 用来作输出吧
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
     楼主| 发表于 2007-8-21 18:09:28 | 只看该作者
    对比风版主以及楼上的文章,终于找到了原因!竟然是调用function时必须用Call Fun(pa)。没想到Call还有这个用处,看来还得认真看帮助啊!要学的地方还太多啊!sdlkfj5
    谢谢两位的回答!sdlkfj6
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
    发表于 2007-8-21 18:00:54 | 只看该作者
    不会啊
    比如说
    Public Sub swap(byref a,byref b)
            Dim c
            c = a
            a = b
            b = c
    End Sub

    调用它:
    dim x,y
    x = 1
    y = 2
    call swap(x,y)
    msgbox x  '为 2
    msgbox y  '为 1

    [ 本帖最后由 yuandjing 于 2007-8-21 18:02 编辑 ]
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    2#
    发表于 2007-8-21 17:52:50 | 只看该作者
    看我的博客里有
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-16 00:11 , Processed in 0.073205 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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