二楼正解!一楼的函数过程需要最后把参数赋值给函数名的...少一句赋值代码,其他没什么问题!建议大家看下关于Sub过程与Function过程的讲解,不算难!!
(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)
然后再
byv x
输出0,因为传值,无法返回。
注:数组、自定义类型只能通过ByRef传,因为他们不是一个值,是一组值,一组值就只能传内存地址了。
BYREF说明白点就是在过程中使用的数值和外面的数值相等了,并且一旦在过程中改变了这个数值,那么引用过程的数值也修改了。一般来说缺省就是BYREF。
优点:节约一个内存地址的大小,并且实现数值的修改
BYVAL指的是为这个变量在内存中重新开辟一个地址进行存储。在过程中修改这个数值不会影响这个数值。
再PS一下,他的解释也是对的
对他修改一下
SUB byr(byref a as integer)'BYREF不写也是对的
end SUB
SUB byv(byval a as integer)
'这儿定义两个函数de和df,其中de的index变量是按值传递(byval),df的index变量是按地址传递(byref)。
funtion
de(byval
index)
index=index-3
de=index
end
function
df(byref
df=index
'定义一个变量n=12
'在程序中调用de函数时:
m=de(n)
'这时m的值为9,n的值为12
'在程序中调用df函数时:
m=df(n)
'这时m的值仍为9,n的值却变为9
按值传递(byval)仅仅是把变量n的值传递给函数变量index,在函数内部对index自身进行操作时,不会影响n的值;
而按地址传递(byref)就不一样了,在函数内部对index自身进行操作时,只要index的值改变了,n的值也随之改变。
按参数传递
ByVal是值传递;ByRef是地址传递。在交换函数里单纯交换值时没有效果的,需要交换对应的地址。
主要区别:
1、引用参数(ref)在可以作为引用参数在函数成员调用中传递之前,必须已明确赋值,而输出参数(out)在可以作为输出参数在函数成员调用中传递之前不一定要明确赋值,在该函数成员正常返回前都必须已明确赋值。
2、在函数内部,引用参数(ref)被视为初始已赋值,输出参数(out)被视为初始未赋值。
3、默认地,VB中的所有参数都是值传递。只有在参数的修饰符中明确包含out或ref,才是引用传递。但是需要知道的是,当参数的类型是引用类型时,你传递的是一个对象的引用而不是实际的对象。
参数按引用传递,和传地址差不多,你在函数中如果改变了该参数的值,外面的值也会改变
以上就是土嘎嘎小编大虾米为大家整理的byref在vb中什么意思_VB中byref是什么意思相关主题介绍,如果您觉得小编更新的文章对您有所帮助,不要忘记讲本站分享给您身边的朋友哦!!