一个是按址传递,一个是按值传递。。可是在函数调用的题中搞不太清楚了。。。
这是vb中传值与传址的参数修饰
Byval 是按值传送,在传的过程中不会改变原来的值,仅仅传送的是一个副本,而 Byref 相反,从内存地址来说,后者是同一个内存地址
ByVal为传值,当你把函数外的一个变量,如n传给ByVal的参数时,在函数体内对该参数所做的任何变更,不会影响函数体外的这个n变量的值
而ByRef为传地,即把函数体外变量n的地址传给ByRef的函数参数,这样,你在函数内容对该参数所做的变更就会体现在函数体外部的这个变量n上,也就是,你在函数内容把它变更的话,函数体外部的它也会跟着变
BYREF 是在过程中使用的数值和外面的数值相等了,并且一旦在过程中改变了这个数值,那么引用过程的数值也修改了。一般来说缺省就是BYREF。
优点:节约一个内存地址的大小,并且实现数值的修改
BYVAL 是为这个变量在内存中重新开辟一个地址进行存储。在过程中修改这个数值不会影响这个数值。
简单来说Byval是传值,Byref是传地址,ByVal :表示该参数是按值方式传递的。ByRef :表示该参数按引用方式传递。下面小编为大家详细介绍Byval 和Byref的区别。
1、引用参数(ref)在可以作为引用参数在函数成员调用中传递之前,必须已明确赋值,而输出参数(out)在可以作为输出参数在函数成员调用中传递之前不一定要明确赋值,在该函数成员正常返回前都必须已明确赋值。
2、在函数内部,引用参数(ref)被视为初始已赋值,输出参数(out)被视为初始未赋值。
3、默认地,VB中的所有参数都是值传递。只有在参数的修饰符中明确包含out或ref,才是引用传递。但是需要知道的是,当参数的类型是引用类型时,你传递的是一个对象的引用而不是实际的对象。