VB的byval用法
PrivateSubForm_Click()Dima%,b%a=3b=8meda,bPrinta,bEndSubSubmed(x%,ByValy%)x=3*xy=x+yE...
Private Sub Form_Click()
Dim a%, b%
a = 3
b = 8
med a, b
Print a, b
End Sub
Sub med( x%, ByVal y%)
x = 3 * x
y = x + y
End Sub
请教一下
这样一段程序,加上BYVAL后输出的y值是8,不加的话是17,为什么呀~
谢谢大家,再请教一下,既然不会影响变量的值,那这个语句有啥意义呢? 展开
Dim a%, b%
a = 3
b = 8
med a, b
Print a, b
End Sub
Sub med( x%, ByVal y%)
x = 3 * x
y = x + y
End Sub
请教一下
这样一段程序,加上BYVAL后输出的y值是8,不加的话是17,为什么呀~
谢谢大家,再请教一下,既然不会影响变量的值,那这个语句有啥意义呢? 展开
5个回答
展开全部
这是vb参数传递的基本知识
不加Byval 默认的是Byref
Byref 是传址,就是把变量的地址传送给函数,在函数的内部对参数的修改,实际上是对变量地址里的数据修改,所以当函数返回的时候,传进来的变量也是跟着改变的
Byval 是传值,顾名思义,就是把变量的数据传给函数,函数内部对其做任何处理都不会影响变量本身的值
举个简单的例子
如果你写一个函数,想让它返回两个或更多值,你就用传址的方式,在函数内部对参数的修改,返回之后,你传进去的变量,不就有新的值了吗(还有其他用法,我在这就不说了)
不加Byval 默认的是Byref
Byref 是传址,就是把变量的地址传送给函数,在函数的内部对参数的修改,实际上是对变量地址里的数据修改,所以当函数返回的时候,传进来的变量也是跟着改变的
Byval 是传值,顾名思义,就是把变量的数据传给函数,函数内部对其做任何处理都不会影响变量本身的值
举个简单的例子
如果你写一个函数,想让它返回两个或更多值,你就用传址的方式,在函数内部对参数的修改,返回之后,你传进去的变量,不就有新的值了吗(还有其他用法,我在这就不说了)
展开全部
ByVal指的是按值传递,程序会将被传递的参数的值拷贝一份存在一个临时区域中参与调用过程的执行,在代码中即使使用诸如a=a+1之类改变参数值的语句,实际只改变了它的副本内容,而并没有真正改变a的内容;
加上BYVAL后,y的值就不会变化,所以一直是8,如果不加,则y的值就会跟着变化为17
加上BYVAL后,y的值就不会变化,所以一直是8,如果不加,则y的值就会跟着变化为17
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
vb 的byval 是用在函数参数调用方式的一种。如果在调用函数是的参数时 前面用上关键字byval 指明 该参数调用方式是传值方式 参与调用的变量在调用函数的过程中不会变。例如:
sub p(x as integer)
x=2
end if
sub main()
dim a asinteger
a=1
call p(a)
print a
end sub
这个时候 输出的 a的值已经变为 2
而下面的例子 用了byval关键字时变量a就不会发生变化。
sub p(byavl x as integer)
x=2
end if
sub main()
dim a asinteger
a=1
call p(a)
print a
end sub
sub p(x as integer)
x=2
end if
sub main()
dim a asinteger
a=1
call p(a)
print a
end sub
这个时候 输出的 a的值已经变为 2
而下面的例子 用了byval关键字时变量a就不会发生变化。
sub p(byavl x as integer)
x=2
end if
sub main()
dim a asinteger
a=1
call p(a)
print a
end sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2010-06-14
展开全部
byval 按值传递
byref 也就是没写时默认值 按地址传递
按地址只要你改变参数中的Y值 如你med过程中的y = x + y 那么你调用时med a, b 的B就会被改变
byval 则不会 因为它只是传递一个数值给过程而已
Y不会改变 但 X会改变A啊。。X没加byval 就默认为byref
题目这么写就是给你做对比用 一个改变一个不改变
byref 也就是没写时默认值 按地址传递
按地址只要你改变参数中的Y值 如你med过程中的y = x + y 那么你调用时med a, b 的B就会被改变
byval 则不会 因为它只是传递一个数值给过程而已
Y不会改变 但 X会改变A啊。。X没加byval 就默认为byref
题目这么写就是给你做对比用 一个改变一个不改变
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
呵呵 答应够齐全的 所以我就不献丑了!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询