永发信息网

VB子过程调用

答案:2  悬赏:70  手机版
解决时间 2021-02-26 12:06
Private Sub Command1_Click()
Form1.AutoRedraw = True ' 使得屏幕可以显示字符
Dim m%, n%
n = 3: m = 4
F (n + m): Print m, n
Print
F (m): Print m, n
Print
F (n): Print m, n
Print
F (5): Print m, n
Print

End Sub
Public Sub F(n%)
n = 3 * n + 4
End Sub

Private Sub Command2_Click()
Form1.AutoRedraw = True ' 使得屏幕可以显示字符
Dim m%, n%
n = 3: m = 4
F n + m: Print m, n
Print
F m: Print m, n
Print
F n: Print m, n
Print
F 5: Print m, n
Print
End Sub
command1输出:
4 3
4 3
4 3
4 3
command2输出:
4 3
16 3
16 13
16 13

同学提供的答案是:
4 3
16 3
16 3
16 3
完全不懂怎么回事,求解释!
最佳答案
Sub F(n%)中nj是传地址的。
传地址时过程中的变量会在调用的过程(f())里被改变并带回原过程。
传值时过程中的变量不会被调用的过程改变。
以上题中:
调用过程时参数加括号就强制转换成传值了。所以结果与不加括号是不一样的。
建议反复学习传地址,与值部分的基础知识。

你要想得到你同学的结果如下:
Private Sub Command3_Click()
Form1.AutoRedraw = True ' 使得屏幕可以显示字符
Dim m%, n%
n = 3: m = 4
F n + m: Print m, n
Print
F m: Print m, n
Print
F (n): Print m, n
Print
F m + 5: Print m, n
Print

End Sub
全部回答
实际是打印了,打印出来的是空的所以你看不出来。 原因在于你打印的这个i不是bb过程里的i,那个i只归bb所称所有,出了子过程就不存在了。 而你打印的那个i只是当作你在command1_click里声明的一个变体型变量(因为你没有要求强制申明变量,vb就当作是一个变量来处理了),你没有给它赋值过,所以打不出来什么。你在所有代码前面加option explicit看看会怎样?option explicit会强制你声明变量 option explicit private sub command1_click() dim c as integer, e as integer c = 36 call bb(c) print i end sub public sub bb(d as integer) dim i as integer i = d end sub
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
东记行冬稻煮客家餐厅地址在什么地方,想过去
据《全国主体功能区规划》,全国主体功能区规
8进制中的7等于10进制的几
为什么炉火越扇越旺,而蜡烛火一扇就灭??
在什么情况下要设拉结筋?
广字这个偏旁能加什么?
蒙原香火烤牛肉干草原特产店怎么去啊,有知道
That is () he’s wearing his biack trous
有谁知道百世汇通快递几号开工
我的学校作文400字
小塔沽我想知道这个在什么地方
何炅私自用的什么手机
用基本户转账时出现审核待发出是什么问题
奥迪a1 1.2t 请问百公里油耗大概多少 市区内
材料一:……若又割之,次以十二觚之一面乘半
推荐资讯
有关渔家的诗句
2019年小学剑桥英语同步练习六年级上册Join i
易县二高录取数线
芒果是几月份的
怎样才能知道一粒大米的体积
到底哪买手机有保障,售后服务好,不敢再相信
间二苯苯环上氢原子被取代,生成一硝基取代物
我喜欢一个女生,她对我的态度和对别的男生态
商丘稻盛仓实业有限公司怎么去啊,有知道地址
张家港市鹿苑兴鸿服装厂地址在哪,我要去那里
[image]100 万能的朋友圈,谁能告诉我,大秦
拿手机莫名其妙手抖很难受是什么原因
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?