在VB中BYREF和BYVAL是什么意思。

怎么使用?... 怎么使用? 展开
 我来答
萍水e相逢
2011-03-31 · TA获得超过3万个赞
知道大有可为答主
回答量:5.9万
采纳率:46%
帮助的人:1.4亿
展开全部
ByRef和ByVal
因为每个要传递给函数过程(或子程序)的变量,都可能在接收时改变数值,所以知道如何来保护变量的原始数值是非常重要的。VB有两个关键字,提供或者否认改变变量内容的允许——ByRef和ByVal。VB默认地按地址(关键字ByRef)给函数过程(或子程序)传递信息,引用函数被调用时,函数参数明确的数据。因此,如果函数改变了参数值,原始的数值就被改变了。如果你在函数MyAverage声明参数num1的前面忽略了关键字ByVal时,你就会得到这种结果。如果你想要函数过程改变原始数值,你不必专门在参数前加关键字ByRef,因为,变量数值的传递默认就是ByRef。当你在参数名称前使用关键字ByVal时,VB按值传递参数,这意味着VB复制一份原始数据,然后将复制值传递给函数,如果函数改变了参数的数值的话,原始数据依然不会变——只有复制值变化。这就是为什么函数MyAverage改变了变量num1的数值,而它的原始值还保持不变。
网海1书生
科技发烧友

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

向TA提问 私信TA
展开全部
打个比方:
ByVal 就像是你给别人100块钱,这100块钱给了他之后就基本上跟你没关系了,他怎么使用都不再会影响到你的剩余财产。这就是传值调用,即传递的只是参数的值,函数内部对这个值所进行的任何修改都不会改变该参数调用前的变量值(就好比相同名字的两个人,你打其中一个人的脸,另一个人的脸并不会疼,对吧?)。
而 ByRef 就像是你把自己的银行账号和密码告诉别人,那么别人随时可以从中取钱、存钱、查询余额等,也就是说他的操作可以直接改变你的财产数值。这就是传址调用,即传递的是参数的内存地址,函数内部只要修改了这个地址中的内容,那么参数调用前的变量值也会跟着改变(就好比同一个人有不同的两个名字,那么不管是按哪个名字打脸,疼的都是他对吧?)。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式