VFP-04-06-变量作用域、自定义函数.doc

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

变量作用域、自定义函数 4.5.3 内存变量的作用域 变量的作用域:变量的作范围。程序由模块(主、子程序)组成,模块中有内存变量,内存变量有作用范围。变量的作用域,从定义变量处开始,一直向下。 1.定义全局内存变量 全局变量既可以是单个变量,也可以是数组。分别以下列格式定义。 格式1:Public 内存变量表 格式2:Public 数组名1(上界1[,上界2[, ...])[,…] 功能:定义全局变量。 ①内存变量表中既可含普通变量,也可含数组。 ②全局变量不会自动释放。只能用release命令显式释放,或退出VFP。 ③VFP命令窗口中定义的变量,默认为全局变量。 ④全局数组的每个元素都是全局的。 第116页,例 4.35 主程序中使用子程序中定义的全局变量。 *文件名Main.prg set talk off clear clear memory 清除所有内存变量 I=2 默认是私有的 Do ABC ?主程序中的输出结果: ?I=+str(I,2)+ J=+str(J,2) set talk on return *--------------------- Procedure ABC public J J=I*8 J=J+5 ?过程中的输出结果: ?I=+str(I,2)+ J=+str(J,2) return 小提示:要检测全局变量,请先clear memory以排除干扰。 2.定义局部内存变量 (1)什么叫局部? 更小的范围就是局部。对于一个模块,更后的部分是局部。对于主程序,子程序是局部。 (2)Private定义局部变量 格式1:Private 内存变量表 格式2:Private 数组名1(上界1[,上界2[, ...])[,…] 功能:定义局部变量。 ①未经定义的变量,默认是局部(Private)的。 ③无论全局还是局部变量,无初值的,一律自动赋初值.F.。 ③局部变量作用域的子模块扩展规则 Private变量的作用域,通过调用子模块而扩展到子模块中。 图4-20 Private变量作用域子模块扩展规则 第117页,例 4.36 子程序中的局部变量,在主程序中找不到。 R=100 默认为Private变量 Do Sub1 调用子程序 ?P 主程序中找不到这个变量 Return *------------------- procedure Sub1 P=2*3.14*R 主程序中的Private变量,子程序中可用 return 3.Private隐藏内存变量的功能 (1)同名变量就近使用规则(原理) 程序中,对于同名的变量,默认使用最近的。因此, ①字段变量(因为在当前工作区内)优先于(即隐藏)同名内存变量; 注:什么叫隐藏?就是被遮住,看不见,用不上。 图4-22 字段变量隐藏同名内存变量 例如 use student.dbf use student.dbf ?学号 结果是字段变量“学号”值,如“960106” 学号=abcd “=”号赋值,只给内存变量赋值 ?学号 结果还是优先使用字段变量 ?m.学号 特别用“m.”指明内存变量,结果才是“abcd” ②同一模块内,小局部存变量优先于(即隐藏)大局部同名内存变量; 图4-23 Private变量隐藏同模块同名变量 ③不同模块中,子模块局部内存变量优先于(即隐藏)主模块同名内存变量。 图4-26 用Private隐隐藏变量 小提示:主程序中的private变量,子程序同样可以用private屏蔽。 (3)为什么大范围定义的局部变量,小范围中再定义为全局变量会出错? 因为那样,与Private的隐藏功能相矛盾。 第118页,例 4.37 子程序中的同名局部变量隐藏主程序中同名变量。 R=100 默认为Private变量 P=10 默认为Private变量 Do Sub2 调用子程序 ?P 仍是主程序中的值 Return *------------------- procedure Sub2 Private P 局部变量,主程序中的同名变量被屏蔽 P=2*3.14*R 主程序中的Private变量,子程序中可用 Return *(5)有没有不通过子程序扩展作用域的变量? 有,Local变量,即本地变量。如:Local x,y,z。 小提示:采用Local变量,是向C语言靠拢。 4.调用过程时的数据传递 教学提示:VFP的参数传递,过程中默认传址

文档评论(0)

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

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

1亿VIP精品文档

相关文档