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

我知道一个是按址传递,一个是按值传递。。可是在函数调用的题中搞不太清楚了。。。

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个回答  2009-08-13
(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传,因为他们不是一个值,是一组值,一组值就只能传内存地址了。
第2个回答  2009-08-14
二楼正解!一楼的函数过程需要最后把参数赋值给函数名的…少一句赋值代码,其他没什么问题!建议楼主看下关于Sub过程与Function过程的讲解,不算难!!
相似回答