请教FOXPRO 中有关local变量的问题
下面三个演示变量的程序,我怎么也搞不明白,请大虾们帮忙解答:
* 1.prg
a=1
b=2
c=3
do sub
? a,b,c,d
return
* sub.prg
public d
private b
local c
a=4
b=5
c=6
d=7
do sub1
return
* sub1.prg
a=8
b=9
c=10
d=11
return
运行结果为:8 2 10 11
为什么变量C的值是10? 在sub子程序中变量C的值是6,怎么到了上级程序就等于sub1子程序中的值呢?我将sub1子程序中变量C改为:C=100 运行结果为:8 2 100 11 local变量不是只在本级程序中起作用吗?
追问:回答的太专业、太抽象,什么:屏蔽级别较高的同名变量,什么:被高层或低层,什么:执行完毕将被释放,这些都是教科书上的内容,各种书上都能看到,如果我能理解就不问了。麻烦您就以本问题为例分析一下C值为什么是10,,而不是3或6?也使我对上述这些专业术语有所理解,谢谢!
答案:用local 声明的变量或是数组,能在local 所在的程序段中屏蔽级别较高的同名变量
说的有点绕口
局部内存变量和变量数组只能在创建它们的过程或函数中使用和更改,不能被高层或低层程序访问。一旦包含局部内存变量和数组的过程或函数执行完毕,则这些局部内存变量和数组将被释放。
并且当局部变量与公用变量(Public)或是静态变量(Static)重名时,局部变量在他的作用域内暂时屏蔽公用变量或是局部变量
根据上面所述
你再分析一下你的程序
上一个:foxpro数据库问题。用的是foxpro9.0
下一个:Visual Foxpro试题:将数学表达式(a+b)/(c-d)写成VFP表达式是( )