VB,VB题,这串代码Call p(x, (y))处括号里面有个括号什么意思
答案:2 悬赏:70 手机版
解决时间 2021-03-06 19:58
- 提问者网友:無理詩人
- 2021-03-06 00:53
VB,VB题,这串代码Call p(x, (y))处括号里面有个括号什么意思
最佳答案
- 五星知识达人网友:千杯敬自由
- 2021-03-06 01:55
(1)Sub p(ByVal n As Integer, m As Integer)
(2)Call p(x, (y))
先看第(1)句,定义的过程p()包含两个参数,其中n是传值的,m是传址的。
再来看第(2)句,调用时,x变量的值传递给n(传值)。如果y不加括号,则是传址给m;现在给y又加上了括号,则y也是传值给m的了。这是y单独加不加括号的的区别。
现在回答你的疑问:“难道是说p(x, (y))都是给n传值吗?”
答:因为变量x对应n参数,所以给n传值与y加不加括号没有关系。之后以n是传值,是因为定义过程时的说明(参见在第(1)句中byval)。追问我试了下去掉ByVal结果y还是原数,是不是只要加上括号就变味传值了追答x变量的值是传值给参数n,所以子过程中对n的赋值不会影响到x,它们已经没有关联。这是因为ByVal n As Integer的原因;
y变量的值也是传值给参数m,所以对m的赋值不会影响到y,它们已经没有关联。这是因为(y)的原因。
需要注意的是:ByVal仅仅对x->n有效,而对后面的y->m无效,所以,你去掉byval,并不会影响y的传递方式。若想两个参数都传值,要写成Sub p(ByVal n As Integer,byval m As Integer)才可以。
所以,在原程序中,你只是把byval去掉,y仍然保持的是传值状态,所以它还是原数。你说的“只要加上括号就变味传值了”是对的。
(2)Call p(x, (y))
先看第(1)句,定义的过程p()包含两个参数,其中n是传值的,m是传址的。
再来看第(2)句,调用时,x变量的值传递给n(传值)。如果y不加括号,则是传址给m;现在给y又加上了括号,则y也是传值给m的了。这是y单独加不加括号的的区别。
现在回答你的疑问:“难道是说p(x, (y))都是给n传值吗?”
答:因为变量x对应n参数,所以给n传值与y加不加括号没有关系。之后以n是传值,是因为定义过程时的说明(参见在第(1)句中byval)。追问我试了下去掉ByVal结果y还是原数,是不是只要加上括号就变味传值了追答x变量的值是传值给参数n,所以子过程中对n的赋值不会影响到x,它们已经没有关联。这是因为ByVal n As Integer的原因;
y变量的值也是传值给参数m,所以对m的赋值不会影响到y,它们已经没有关联。这是因为(y)的原因。
需要注意的是:ByVal仅仅对x->n有效,而对后面的y->m无效,所以,你去掉byval,并不会影响y的传递方式。若想两个参数都传值,要写成Sub p(ByVal n As Integer,byval m As Integer)才可以。
所以,在原程序中,你只是把byval去掉,y仍然保持的是传值状态,所以它还是原数。你说的“只要加上括号就变味传值了”是对的。
全部回答
- 1楼网友:梦中风几里
- 2021-03-06 02:53
括号没意思 就如同 1+2+2+(2*3)中的括号 有和没有全是 现计算2*3 这里也一样 有核没有都是 y传给第二个参数m
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯