
vb中,byval和byref的用法有什么区别啊?具体能举个例子吗?困惑~~~
3个回答
展开全部
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
优点:节约一个内存地址的大小,并且实现数值的修改
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)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传,因为他们不是一个值,是一组值,一组值就只能传内存地址了。
例如
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传,因为他们不是一个值,是一组值,一组值就只能传内存地址了。

你对这个回答的评价是?
展开全部
二楼正解!一楼的函数过程需要最后把参数赋值给函数名的…少一句赋值代码,其他没什么问题!建议楼主看下关于Sub过程与Function过程的讲解,不算难!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询