vb中byval和byref什么区别,什么时候要用什么时间不用我搞不清楚求解答。。。最好举个例子

2024-11-18 19:53:25
推荐回答(3个)
回答1:

ByVal是传值调用,比如变量a把自己的值传递给变量b,b获得的只是a的值,本质上它们是两个不同的变量,只不过它们的值相同而已,而改变b的值并不会影响到a的值;
ByRef则是传址调用,变量a把自己所在的内存地址传递给变量b,这时候a和b所指向的内存地址是一样的,所以实际上它们相当于同一个变量,只是名字不同而已(如果处在不同的作用域那么也可以同名),改变b的值那么a的值也会跟着改变!

回答2:

直接的说:

byval:将参数按值传递。即A=B,但不可以B=A,(只能将实参传递给形参)为单向传输。如果实参为常量或表达式,则默认为值传递。如果实参为变量,却想按值传递,则需要在变量前加上关键字BYVAL,或将调用过程语句的实参中的变量括起来。

Byref:将参数按地址传递,即A=B,且可以B=A,(形参改变,则对应的实参也将随之改变)为双向传输。同BYVAL(与BYVAL相反)

例子:

Private sub Exam (Byval X, Y, Z)
    X=X+2
    Y=Y-3
    Z=Z^2
    ? X, Y
End sub

Private sub form_activate()
    Dim A%, B%, C%
    A=1: B=2: C=3
    ? A, B, C
    Call Exam(A, (B), C)
    ? A, B, C
End Sub

运行结果为:

1    2    3
3    -1    9
1    2    9

解释:

上面例子中定义过程语句中的形参X前加上BYVAL,调用该过程的语句中的B被括起来。

所以在运算中,AB为按值传递(单向),C为按地址传递(双向)

BYREF与之相似


                                                                                          如还有疑问,可说明问题

                                                                                             haozhennan@outlook.com

                                                                                                            1398280353(郝振楠)

回答3:

byval 的全称 by value,突出在value上,就是传值
byref 的全称 by reference,突出在 reference上,就是传址
如果一个函数的参数使用byval修饰,则在函数内部修改了这个参数的值的时候,在调用这个函数时在该参数位置的变量的值从未改变。
如果用byref修饰,则在函数内部修改这个参数的值的同时,调用的变量的值也会同时改变。