以前一直没注意vb参数的调用!!大家猜猜下面代码的结果

twohorses 2015-01-26 01:16:07
Private Sub Form_Load()
Dim a As Integer
Dim b As Integer
Dim c As Integer
a = 10
b = 10
c = 10

bb (a)
bb b
Call bb(c)

MsgBox a
MsgBox b
MsgBox c

End Sub

Private Sub bb(b1 As Integer)
b1 = b1 + 1
End Sub


有什么区别?
...全文
238 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2015-01-29
  • 打赏
  • 举报
回复
4楼是达人。
三楼の郎 2015-01-26
  • 打赏
  • 举报
回复
Private Sub bb(b1 As Integer) b1 = b1 + 1 End Sub 等同于 Private Sub bb(byref b1 As Integer) b1 = b1 + 1 End Sub byref传地址、byval传值 bb b Call bb(c) 传递的是变量b和c的地址,所以b1变化时,b、c也会变 bb(a) 传递的是(a)运算结果的地址,不是变量a的地址,所以b1变化时a不变
Tiger_Zhao 2015-01-26
  • 打赏
  • 举报
回复
正确的方式看帮助。
疑似错误的语句,详细描述完全可以编一本VB大全之类的书骗钱了。
twohorses 2015-01-26
  • 打赏
  • 举报
回复
引用 1 楼 Tiger_Zhao 的回复:
三个调用bb过程的语句: 语句二和语句三的写法都可以。所以显示11。 语句一的括号是运算符而不是过程后的括号,表达式(a)的结果调用过程,bb内更改的是这个结果的临时变量,和变量a无关。显示的还是10。
以前没注意过这个,(a)的括号是运算符,还真不知道,帮助文档上有这方面的解释吗?
Tiger_Zhao 2015-01-26
  • 打赏
  • 举报
回复
三个调用bb过程的语句:
语句二和语句三的写法都可以。所以显示11。
语句一的括号是运算符而不是过程后的括号,表达式(a)的结果调用过程,bb内更改的是这个结果的临时变量,和变量a无关。显示的还是10。

7,785

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧