CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  基础类

为什么ByRef的参数不能返回改变的值

楼主pegtop(再回首)2006-03-19 21:25:27 在 VB / 基础类 提问

我定义了两个过程  
  Sub   A  
  ……  
        a=1  
        b=2  
        c=3  
        Call   B(a,b,c)  
  ……  
   
  Sub   B(ByVal   a   as   Integer,ByRef   b   as   Integer,ByRef   c   as   Integer)  
        b=5  
        c=6  
  End   Sub  
   
  可为什么调用之后a,b,c的值仍然没变?什么地方调用有问题吗?  
  问题点数:20、回复次数:4Top

1 楼tztz520(午夜逛街)回复于 2006-03-19 21:44:20 得分 0

可以的.  
  全部用ByRef   就行Top

2 楼tztz520(午夜逛街)回复于 2006-03-19 21:44:46 得分 4

Private   Sub   a()  
  Dim   a   As   Integer,   b   As   Integer,   c   As   Integer  
  a   =   1  
  b   =   2  
  c   =   3  
  Call   bb(a,   b,   c)  
   
  MsgBox   a  
  MsgBox   b  
  MsgBox   c  
  End   Sub  
         
  Private   Sub   bb(ByRef   a   As   Integer,   ByRef   b   As   Integer,   ByRef   c   As   Integer)  
        b   =   5  
        c   =   6  
        a   =   4  
  End   Sub  
   
  Private   Sub   Command2_Click()  
  a  
  End   SubTop

3 楼Freshmen007_Bug()回复于 2006-03-20 09:52:00 得分 1

有个问题,需要提醒的是,在多个函数调用时,最好不要使用三重以上的Byref。  
   
  就是最好不要这样用:  
  主函数  
          函数1(byref   ...)  
  end  
   
   
   
  函数1(byref   ...)  
          调用函数2()  
  end  
  函数2(byref...)  
          调用函数3(byref...)  
  end  
  函数3(byref)  
  endTop

4 楼of123()回复于 2006-03-20 10:27:25 得分 15

1   变量名和函数名不得相互混淆  
  2   调用者必须声明变量,这样才会创建实例  
   
  Sub   bb(ByVal   a   As   Integer,   ByRef   b   As   Integer,   ByRef   c   As   Integer)  
        b   =   5  
        c   =   6  
  End   Sub  
   
  Private   Sub   Form_Click()  
  Dim   a   As   Integer,   b   As   Integer,   c   As   Integer   '很重要  
        a   =   1  
        b   =   2  
        c   =   3  
        Call   bb(a,   b,   c)  
        Debug.Print   a,   b,   c  
  End   SubTop

相关问题

  • 返回参数
  • 动态改变参数无法返回数据
  • 结构体指针作为参数传递,返回后并不改变??怪了!
  • 关于: ByRef Byte() 作参数
  • 怎样去返回参数值
  • 怎样接受 SQL 返回参数?
  • dll中参数的返回的问题?
  • 函数参数返回值的问题
  • recordset 当参数返回(在线等)
  • asp引用参数的疑惑(ByRef)

关键词

  • 函数
  • byref
  • 调用
  • sub
  • as integer
  • bb
  • call

得分解答快速导航

  • 帖主:pegtop
  • tztz520
  • Freshmen007_Bug
  • of123

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo