vf程序设计按值传递中中加不加括号的区别是什么
如下vf程序设计:store100tox1,x2setudfparamstovaluedop4withx1,(x2)这里不明白,如果命令是dop4withx1,x2,即加...
如下vf程序设计:
store 100 to x1,x2
set udfparams to value
do p4 with x1, (x2) 这里不明白,如果命令是do p4 with x1,x2,即加不加括号的区别是什么
?x1,x2 展开
store 100 to x1,x2
set udfparams to value
do p4 with x1, (x2) 这里不明白,如果命令是do p4 with x1,x2,即加不加括号的区别是什么
?x1,x2 展开
1个回答
展开全部
不加括号是按址传递参数, 加括号是按值传递参数.
你的例子里, 假如你的过程p4里面,将x1,x2传给参数y1,y2
x1是按址, 就是x1和y1指向的同一个内存地址, 在p4里改变y1值, 同样x1也改变
x2是按值,就是x2和y2指向不同的内存地址,在p4里改变y2值, x1不受影响.
另外你的命令set udfparams to value写错了,应该是SET UDFPARMS TO VALUE
该命令的帮助文件中说明如下:
指定 Microsoft Visual FoxPro 按值还是按引用传递参数给用户自定义函数(UDF)。
SET UDFPARMS TO VALUE | REFERENCE
参数
TO VALUE
按值创建变量给参数。当按值传递变量时,过程或函数可以改变变量中的值;但是,调用程序中的变量原值不会改变。(默认)
注意:
使用 SET UDFPARMS TO VALUE 不会影响 DO 命令中的 WITH
子句,默认情况下,DO…WITH…命令通过引用传递给参数。
TO REFERENCE
按引用传递变量给参数。当按引用传递变量时,过程或函数可以改变变量中的值,并且改变调用程序中的变量原值。
注意其中这句:使用 SET UDFPARMS TO VALUE 不会影响 DO 命令中的 WITH 子句,默认情况下,DO…WITH…命令通过引用传递给参数。
就是说虽然你有这句命令, 但是你的do 命令默认仍是按引用(按址)传递
你的例子里, 假如你的过程p4里面,将x1,x2传给参数y1,y2
x1是按址, 就是x1和y1指向的同一个内存地址, 在p4里改变y1值, 同样x1也改变
x2是按值,就是x2和y2指向不同的内存地址,在p4里改变y2值, x1不受影响.
另外你的命令set udfparams to value写错了,应该是SET UDFPARMS TO VALUE
该命令的帮助文件中说明如下:
指定 Microsoft Visual FoxPro 按值还是按引用传递参数给用户自定义函数(UDF)。
SET UDFPARMS TO VALUE | REFERENCE
参数
TO VALUE
按值创建变量给参数。当按值传递变量时,过程或函数可以改变变量中的值;但是,调用程序中的变量原值不会改变。(默认)
注意:
使用 SET UDFPARMS TO VALUE 不会影响 DO 命令中的 WITH
子句,默认情况下,DO…WITH…命令通过引用传递给参数。
TO REFERENCE
按引用传递变量给参数。当按引用传递变量时,过程或函数可以改变变量中的值,并且改变调用程序中的变量原值。
注意其中这句:使用 SET UDFPARMS TO VALUE 不会影响 DO 命令中的 WITH 子句,默认情况下,DO…WITH…命令通过引用传递给参数。
就是说虽然你有这句命令, 但是你的do 命令默认仍是按引用(按址)传递
追问
很清楚,非常感谢
追答
SET UDFPARMS TO VALUE 还是 SET UDFPARMS TO REFERENCE
是统一设置, 以后传参数就无需考虑加不加括号了. 在使用函数传递参数时有点用处.
但是在do ... with .... 中除外.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询