vb中,byval和byref的用法有什么区别啊?具体能举个例子吗?困惑~~~

我知道一个是按址传递,一个是按值传递。。可是在函数调用的题中搞不太清楚了。。。... 我知道一个是按址传递,一个是按值传递。。可是在函数调用的题中搞不太清楚了。。。 展开
 我来答
paopaodan54
推荐于2018-03-28 · TA获得超过214个赞
知道答主
回答量:167
采纳率:0%
帮助的人:0
展开全部
BYREF说明白点就是在过程中使用的数值和外面的数值相等了,并且一旦在过程中改变了这个数值,那么引用过程的数值也修改了。一般来说缺省就是BYREF。
优点:节约一个内存地址的大小,并且实现数值的修改

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

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

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

然后如果我们这样用
Dim x as integer
byr x
msgbox x
输出10

(2)ByVal
例如
SUB byv(byval a as integer)
a=10
end SUB
然后再
Dim x as integer
byv x
msgbox x
swx1995
2009-08-13 · TA获得超过2696个赞
知道大有可为答主
回答量:1477
采纳率:0%
帮助的人:2505万
展开全部
(1)ByRef
例如
function byr(byref a as integer)
a=10
end function

然后如果我们这样用
Dim x as integer
byr x
msgbox x
输出10

(2)ByVal
例如
function byv(byval a as integer)
a=10
end function
然后再
Dim x as integer
byv x
msgbox x
输出0,因为传值,无法返回。

注:数组、自定义类型只能通过ByRef传,因为他们不是一个值,是一组值,一组值就只能传内存地址了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
1360384
2009-08-14 · TA获得超过1213个赞
知道小有建树答主
回答量:1425
采纳率:0%
帮助的人:567万
展开全部
二楼正解!一楼的函数过程需要最后把参数赋值给函数名的…少一句赋值代码,其他没什么问题!建议楼主看下关于Sub过程与Function过程的讲解,不算难!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式