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,为什么呀~
谢谢大家,再请教一下,既然不会影响变量的值,那这个语句有啥意义呢?
展开
 我来答
百度网友1419db9a7
推荐于2018-02-26 · TA获得超过255个赞
知道答主
回答量:248
采纳率:0%
帮助的人:157万
展开全部
这是vb参数传递的基本知识

不加Byval 默认的是Byref

Byref 是传址,就是把变量的地址传送给函数,在函数的内部对参数的修改,实际上是对变量地址里的数据修改,所以当函数返回的时候,传进来的变量也是跟着改变的

Byval 是传值,顾名思义,就是把变量的数据传给函数,函数内部对其做任何处理都不会影响变量本身的值

举个简单的例子

如果你写一个函数,想让它返回两个或更多值,你就用传址的方式,在函数内部对参数的修改,返回之后,你传进去的变量,不就有新的值了吗(还有其他用法,我在这就不说了)
liuyuwxj
2010-06-14 · TA获得超过2.6万个赞
知道大有可为答主
回答量:1777
采纳率:100%
帮助的人:1528万
展开全部
ByVal指的是按值传递,程序会将被传递的参数的值拷贝一份存在一个临时区域中参与调用过程的执行,在代码中即使使用诸如a=a+1之类改变参数值的语句,实际只改变了它的副本内容,而并没有真正改变a的内容;

加上BYVAL后,y的值就不会变化,所以一直是8,如果不加,则y的值就会跟着变化为17
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xujmhw6
2016-01-02 · TA获得超过1084个赞
知道大有可为答主
回答量:1261
采纳率:84%
帮助的人:358万
展开全部
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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户

2010-06-14
展开全部
byval 按值传递
byref 也就是没写时默认值 按地址传递
按地址只要你改变参数中的Y值 如你med过程中的y = x + y 那么你调用时med a, b 的B就会被改变
byval 则不会 因为它只是传递一个数值给过程而已

Y不会改变 但 X会改变A啊。。X没加byval 就默认为byref

题目这么写就是给你做对比用 一个改变一个不改变
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wohahaxing
2010-06-14 · TA获得超过150个赞
知道小有建树答主
回答量:143
采纳率:0%
帮助的人:125万
展开全部
呵呵 答应够齐全的 所以我就不献丑了!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式