变量作用域、自定义函数变量的作用域:变量的作围。程序由模块〔主、子程序〕组成,模块中有存变量,存变量有作用围。变量的作用域,从定义变量处开场,一直向下。1.定义全局存变量全局变量既可以是单个变量,也可以是数组。分别以以下格式定义。格式1:Public <存变量表>格式2:Public <数组名1>(上界1[,上界2[, ...])[,…]功能:定义全局变量。①<存变量表>中既可含普通变量,也可含数组。②全局变量不会自动释放。只能用release命令显式释放,或退出VFP。③VFP命令窗口中定义的变量,默认为全局变量。④全局数组的每个元素都是全局的。第116页,例 4.35 主程序中使用子程序中定义的全局变量。*文件名Main.prgset talk offclearclear memory &&去除所有存变量I=2 &&默认是私有的Do ABC?"主程序中的输出结果:"?"I="+str(I,2)+" J="+str(J,2)set talk onreturn*---------------------Procedure ABCpublic JJ=I*8J=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 Sub1P=2*3.14*R &&主程序中的Private变量,子程序中可用return3.Private隐藏存变量的功能(1)同名变量就近使用规那么〔原理〕程序中,对于同名的变量,默认使用最近的。因此,①字段变量〔因为在当前工作区〕优先于〔即隐藏〕同名存变量;注:什么叫隐藏?就是被遮住,看不见,用不上。图4-22 字段变量隐藏同名存变量例如 use student.dbfuse student.dbf?学号 &&结果是字段变量“学号〞值,如“960106〞学号="abcd" &&“=〞号赋值,只给存变量赋值?学号 &&结果还是优先使用字段变量?m.学号 &&特别用“m.〞指明存变量...