内存变量的作用域-全局与局部 m程序设计 全局变量在任何程序中都有效,局部变量只在定义它的程序中有效。 全局: 【例538】 a.命令窗口中 *水 main. prg 定义的 SET TALK OFF b用 PUBLIO 语句说明的。 a=1 c调用程序定 b=10 DO CX1 有全 局意义。 ?"c="c+10&&出现错误提示:(变量末找到 SET TALK ON 局部 嘉过 Return b.用PR|VATE 子程序cx1 语句说明的。 PUBLICC&&定义 PUBLIC< memvar list> c=a+b RETURN FoxproForWindowshttp://cc.synu.edu.cn 6
FoxPro For Windows http://cc.synu.edu.cn 6 FoxPro程序设计 【例5.38】 **main.prg SET TALK OFF a=1 b=10 DO cx1 ? "c=",c+10 SET TALK ON Return **子程序cx1 c=a+b RETURN 全局: a. 命令窗口中 定义的。 b.用PUBLIC 语句说明的。 c.调用程序定 义的对于被调 用程序具有全 局意义。 内存变量的作用域---全局与局部 全局变量在任何程序中都有效,局部变量只在定义它的程序中有效。 局部: a. 在子程(过 程)定义的。 b. 用PRIVATE 语句说明的。 PUBLIC c &&定义PUBLIC <memvar list> &&出现错误提示:c变量未找到
m程序设计 全局、局部变量辨析 两个变量同名 【例】 例】 ***MAIL1 PRG *≠MAN2PRG SET TALK OFF SET TALK OFF 用 PRIVATE声 A=5 A=5 明为局部,程 DO SUB1 DO SUB2 序执行完,将 ?A 被释放。 ?A SUB1.PRG ***SUB2. PRG 在调用程序中 A=10 PRIVATE A 定义的同名变 RETU 量又可以使用。 A=10 RETU 主对子相当于全局 FoxproForWindowshttp://cc.synu.edu.cn 7
FoxPro For Windows http://cc.synu.edu.cn 7 FoxPro程序设计 • 两个变量同名 • 用PRIVATE声 明为局部,程 序执行完,将 被释放。 • 在调用程序中 定义的同名变 量又可以使用。 【例】 ***MAIL1.PRG SET TALK OFF A=5 DO SUB1 ?A ***SUB1.PRG A=10 RETU 主对子相当于全局 全局、局部变量辨析 【例】 ***MAIN2.PRG SET TALK OFF A=5 DO SUB2 ?A ***SUB2.PRG PRIVATE A A=10 RETU
m程序设计 【例539】下面的程序将显示 PRIVATE语句的作用。 maIn. prg SET TALK OFF SET PROC TO SUB PRG num1=100 num2=200 DO square ?"在主程序中,num1=",num1,"num2=",num2 SET TALK ON sub prg使用局部变量的过程 PROCEDURE square PRIVATE 1 num1=100*100 num2=200*200 ?"在子程序中,num1="um1,"num2=",num2 RETURN FoxproForWindowshttp://cc.synu.edu.cn 6
FoxPro For Windows http://cc.synu.edu.cn 8 FoxPro程序设计 【例5.39】下面的程序将显示PRIVATE语句的作用。 **main.prg SET TALK OFF SET PROC TO SUB.PRG num1=100 num2=200 DO square ?"在主程序中,num1=",num1, "num2=",num2 SET TALK ON *sub.prg使用局部变量的过程 PROCEDURE square PRIVATE num1 num1=100*100 num2=200*200 ?"在子程序中,num1=",num1,"num2=",num2 RETURN