过程调用与参数传递.ppt

  1. 1、本文档共50页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

**********************************1520返回地址1000(地址)20MNXY100010021004100510033520返回地址1000(地址)55MNXY10001002100410051003第32页,共50页,星期六,2024年,5月PrivateSubForm_Click()DimsumAsInteger,iAsIntegerFori=5To1Step-1sum=sum+fact(i)NextiPrintsum=;sumEndSub编写程序计算5!+4!+3!+2!+1!的值调用函数,循环变量作为实参PublicFunctionfact(nAsInteger)AsIntegerfact=1DoWhilen0fact=fact*nn=n-1LoopEndFunction按地址传递参数产生不良干扰的示例:(1)循环变量作为实参Why?如何修改?结果:120正确结果应为:153第33页,共50页,星期六,2024年,5月参数数据类型转换的例子PrivateSubForm_Click()DimSasSingleS=125.5CallConvert((S),”12”+”.5”)EndSub如果为CallConvert((S),”125a”)呢?PrivateSubConvert(InxAsInteger,SingAsSingle)Inx=Inx*2Sing=Sing+23Print“Inx+”;Inx,”sing=”;SingEndSub第34页,共50页,星期六,2024年,5月PrivateSubForm_Click()Dimv1AsInteger,v2AsInteger,v3AsIntegerv1=2:v2=3:v3=4Printv1+v2+v3*f(v1,v2,v3)EndSubPublicFunctionf(aAsInteger,bAsInteger,cAsInteger)a=a+10b=b+10c=c+10f=a+b+cEndFunction调用函数语句,实参是传地址的。实参变量又出现在表达式中结果是571,而非161。why?(2)实参出现在表达式中第35页,共50页,星期六,2024年,5月因为在print语句中,计算表达式时,优先执行函数调用。调用结束时f=39,而v1,v2,v3的值也变了,不是2,3,4而是12,13,14所以结果是:12+13+14*39=571第36页,共50页,星期六,2024年,5月PrivateSubForm_Click()Dimv1AsInteger,v2AsInteger,v3AsIntegerv1=2:v2=3:v3=4V4=v1+v2+v3*f(v1,v2,v3)Printv4EndSub修改成赋值语句结果为161因为执行赋值语句时,计算右侧表达式的值不是首先调用函数,而是按从左到右的顺序进行的,即计算2+3+4*39第37页,共50页,星期六,2024年,5月如果修改成:PrivateSubForm_Click()Dimv1AsInteger,v2AsInteger,v3AsIntegerv1=2:v2=3:v3=4V4=v1+v2+v3*f((v1,v2,v3)*1.0)Printv4EndSub这是一个非整型的()也叫实型表达式结果又是571了,因为计算实型表达式时优先调用函数第38页,共50页,星期六,2024年,5月结论:函数调用的优先级是不确定的,与诸多因素有关。编程

文档评论(0)

xiaoshun2024 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档