ByVal是什么意思?

如题所述

我也来说说

VB中这个ByVal和ByRef
分别是英文"By Value"和"By Reference"
意思就是“通过值(传递)”和“通过引用(传递)”

所以这就好明白了,ByValue是拷贝内存(中的值),而ByRef是传递指针了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2007-02-09
说简单点:
如果想改变这个变量在内存中的值,就byref否则就byval

详细点:

byref是把内存地址告诉程序,所以改变的直接就是内存中的数值,
byval是把内存数值的拷贝给程序,所以改变的只是拷贝,内存原来的值是不会改变的。
第2个回答  2007-02-09
是不是VB里面的传递参数呐 ByVal 传送参数内存的一个拷贝给被调用者。也就是说,栈中压入的直接就是所传的值。ByVal是传递值 源数据不会被修改
第3个回答  2007-06-23
过程中的代码通常需要某些关于程序状态的信息才能完成它的工作。信息包括在调用过程时传递到过程内的变量。当将变量传递到过程时,称变量为参数。

参数的数据类型
过程的参数被缺省为具有 Variant 数据类型。不过,也可以声明参数为其它数据类型。例如,下面的函数接受一个字符串和一个整数:

Function WhatsForLunch(WeekDay As String, Hour _
As Integer) As String
'根据星期几和时间,返回午餐菜单。
If WeekDay = "Friday" then
WhatsForLunch = "Fish"
Else
WhatsForLunch = "Chicken"
End If
If Hour > 4 Then WhatsForLunch = "Too late"
End Function

详细信息 关于 Visual Basic 的数据类型,请参阅本章前面部分。也可以在语言参考中查找指定的数据类型。

按值传递参数
按值传递参数时,传递的只是变量的副本。如果过程改变了这个值,则所作变动只影响副本而不会影响变量本身。用 ByVal 关键字指出参数是按值来传递的。

例如:

Sub PostAccounts (ByVal intAcctNum as Integer)
.
. '这里放语句。
.
End Sub

按地址传递参数
按地址传递参数使过程用变量的内存地址去访问实际变量的内容。结果,将变量传递给过程时,通过过程可永远改变变量值。按地址传递参数在 Visual Basic 中是缺省的。

如果给按地址传递参数指定数据类型,就必须将这种类型的值传给参数。可以给参数传递一个表达式,而不是数据类型。Visual Basic 计算表达式,如果可能的话,还会按要求的类型将值传递给参数。

把变量转换成表达式的最简单的方法就是把它放在括号内。例如,为了把声明为整数的变量传递给过程,该过程以字符串为参数,则可以用下面的语句:

Sub CallingProcedure ()
Dim intX As Integer
intX = 12 * 3
Foo (intX)
End Sub

Sub Foo (Bar As String)
MsgBox Bar 'Bar 的值为字符串‘ 36 ’。
End Sub
相似回答