中易网

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

答案:3  悬赏:20  
解决时间 2021-01-15 02:28
  • 提问者网友:感性作祟
  • 2021-01-14 09:31
vb中,byval和byref的用法有什么区别啊?具体能举个例子吗?困惑~~~
最佳答案
  • 二级知识专家网友:逃夭
  • 2021-01-14 11:06
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
全部回答
  • 1楼网友:雪起风沙痕
  • 2021-01-14 12:45
二楼正解!一楼的函数过程需要最后把参数赋值给函数名的…少一句赋值代码,其他没什么问题!建议楼主看下关于Sub过程与Function过程的讲解,不算难!!
  • 2楼网友:十鸦
  • 2021-01-14 12:32
(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传,因为他们不是一个值,是一组值,一组值就只能传内存地址了。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息