- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
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的参数传递,过程中默认传址
您可能关注的文档
最近下载
- 充电桩采购安装投标方案.pdf VIP
- 2025四川甘孜州城市综合执法大队招聘编外辅助人员5人笔试备考试题及答案解析.docx VIP
- 部编版三年级下册晋升职称无生试讲稿——24.火烧云 第二课时(1).doc VIP
- 管道非开挖修复施工方案.docx
- 《老年人能力评估实务》教案 项目四 老年人能力评估实务.docx VIP
- 《西门子能源管理系统》.pdf VIP
- 20210219-中金公司-行业轮动系列(1):如何从微观结构探析行业轮动信息.pdf VIP
- 2025四川甘孜州城市综合执法大队招聘编外辅助人员5人笔试参考题库附答案解析.docx VIP
- 产业园服务体系内容大全.docx VIP
- 安全文化建设评估表.docx VIP
文档评论(0)