VB有关BYVAL的问题!送10分!

Private x As Integer
Private Sub Command1_Click()
x = 5: y = 3
Call proc(x, y)
Label1.Caption = x
Label2.Caption = y
End Sub

Sub proc(ByVal a%, ByVal b%)
x = a * a
y = b + b
End Sub

最后输出地值是25和3,我想问问
Private x As Integer 对程序的影响是什么!

返回值是25和3,问题是在BYVAL。先要知道BYVAL是按值传递,按值传递那么当调用函数时,是把X,Y的值传递过去,被调用函数里参数a%,b%就像是a=x,b=y。这样的一个概念,由于x是全局变量所以在x=a*a,x就变成了25,但是Y不是全局变量,所以y还是3。如果要在函数执行后修改参数的内容,那么用BYREF(按地址传递),这样x,y的值就会按照函数执行的返回值而改变。建议去看看按值传递和按地址传递的区别。
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-05-18
private定义的变量表示是私有的,其实在Form里这样定义与Dim定义相同没差别。因为默认Dim也是私有的。

但如果编程写Class类或者Module模块时就用处大了,它决定了同名变量的作用域。与private不同的是public公共定义,public只能用于模块和类模块,不能在Form里使用。Public如果定义了x这个变量,那么它的作用域是最广泛的,可以跨模块、跨窗体。

但Private不能写到sub和function里,在过程和函数里只能用dim,且dim的变量只在过程和函数内有效。

如果Form里和函数里都有Dim定义的x,那么函数内以函数内Dim的x为准,函数外以private的x为准。
第2个回答  2010-05-18
没有影响,不知道你是哪里不明白。
byval保证调用的变量值不会被修改。
第3个回答  2010-05-18
按值传递和按地址传递
相似回答
大家正在搜