一道VB初学者的题目

SubS1(ByValxAsInteger,ByValyAsInteger)DimtAsIntegert=xx=yy=tEndSubPrivateSubCommand1_... Sub S1(ByVal x As Integer, ByVal y As Integer)
Dim t As Integer
t = x
x = y
y = t
End Sub

Private Sub Command1_Click()
Dim a As Integer, b As Integer
a = 10
b = 30
S1 a, b
Print "a="; a; "b="; b
End Sub

应该是S1函数把a和b的值换了 为什么显示出来的没有换?
展开
 我来答
anankid
2011-03-24 · TA获得超过2046个赞
知道小有建树答主
回答量:1174
采纳率:0%
帮助的人:837万
展开全部
这个因为你申明x,y的时候是byval声明的,是传值,而不是传址。你把byval改成byref再看看,就不一样了。用byval声明的时候只相当于拷贝了一个a和b的副本,所以任凭副本怎么交换原来的a,b值变。
百度网友6a7d11453
2011-03-24 · TA获得超过954个赞
知道小有建树答主
回答量:931
采纳率:50%
帮助的人:700万
展开全部
vb不太熟
但是你调用S1的时候传进去的参数实际上是a 和 b的值
在S1中更改x y的时候对ab本身没有任何影响
所以ab实际上没有改变
咋改我不太熟
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zsblue
2011-03-24 · TA获得超过104个赞
知道答主
回答量:112
采纳率:0%
帮助的人:89.9万
展开全部
S1(ByVal x As Integer, ByVal y As Integer)
中去掉ByVal
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cbfinal
2011-03-24 · TA获得超过328个赞
知道小有建树答主
回答量:435
采纳率:0%
帮助的人:292万
展开全部
你再看看课本中子函数调用的过程。
按址传送和按值传送
把byval改为byref即可
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
汗涵易8d
2011-03-24 · 超过16用户采纳过TA的回答
知道答主
回答量:108
采纳率:0%
帮助的人:48.8万
展开全部
你这函数是按值传递,不是按地址传递;过程改成:Sub S1(ByRef x as interger, byref y as interger)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式