vb中byval和byref的区别

如何理解vb中byval和byref的区别?... 如何理解vb中byval和byref的区别? 展开
 我来答
网海1书生
科技发烧友

2016-01-04 · 擅长软件设计、WEB应用开发、小程序
网海1书生
采纳数:12311 获赞数:26230

向TA提问 私信TA
展开全部
打个比方:
ByVal 就像是你给别人100块钱,这100块钱给了他之后就基本上跟你没关系了,他怎么使用都不再会影响到你的剩余财产。这就是传值调用,即传递的只是参数的值,函数内部对这个值所进行的任何修改都不会改变该参数调用前的变量值(就好比相同名字的两个人,你打其中一个人的脸,另一个人的脸并不会疼,对吧?)。
而 ByRef 就像是你把自己的银行账号和密码告诉别人,那么别人随时可以从中取钱、存钱、查询余额等,也就是说他的操作可以直接改变你的财产数值。这就是传址调用,即传递的是参数的内存地址,函数内部只要修改了这个地址中的内容,那么参数调用前的变量值也会跟着改变(就好比同一个人有不同的两个名字,那么不管是按哪个名字打脸,疼的都是他对吧?)。
匿名用户
推荐于2018-03-28
展开全部
BYREF说明白点就是在过程中使用的数值和外面的数值相等了,并且一旦在过程中改变了这个数值,那么引用过程的数值也修改了。一般来说缺省就是BYREF。
优点:节约一个内存地址的大小,并且实现数值的修改

BYVAL指的是为这个变量在内存中重新开辟一个地址进行存储。在过程中修改这个数值不会影响这个数值。

PS下,楼上的有些地方写错了FUNCTION必须有返回值。应当声明成过程。
再PS一下,他的解释也是对的

对他修改一下
(1)ByRef
例如
SUB byr(byref a as integer)'BYREF不写也是对的
a=10
end SUB

然后如果我们这样用
Dim x as integer
b www.hbbz08.com yr x
msgbox x
输出10

(2)ByVal
例如
SUB byv(byval a as integer)
a=10
end SUB
然后再
Dim x as integer
byv x
msgbox x
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xujmhw6
2016-01-04 · TA获得超过1084个赞
知道大有可为答主
回答量:1261
采纳率:84%
帮助的人:358万
展开全部
byval 调用函数过程中是传值方式 调用后 参与的变量值不会发生改变 byref是传址方式uivb的默认方式,调用函数后变量的值会发生改变
更多追问追答
追问
能麻烦举个例子吗?
追答
Private Sub Command1_Click()
Dim a As Integer
Dim b As Integer
a = 1
b = 2
Call fun(a, b)

Print a, b
End Sub

Sub fun(ByVal a As Integer, ByRef b As Integer)
a = 10
b = 20
End Sub

这段代码 输出为 1 20
这样懂了吗
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式