函数的参数传递方式有两种,值传递和址传递
所谓值传递,就是参数在传递时仅仅是传递的参数的值,举个简单的例子,例如下属程序段:
Local $a,$b,$c
$a=1
$b=2
$c=0
_Test($a,$b)
$c=$a+$b
MsgBox(0,"Only a Test",$c)
Func _Test($x,$y)
$x=$x+1
$y=$y+1
EndFunc
_Test是一个没有返回值的简单函数,主程序段中调用_Test($a,$b),这时$a的值传递给$x,$b的值传递给$y,这时对$x和$y的任何更改操作只和$x和$y有关,无论怎么对$x和$y进行更改,例如_Test中的$x和$y都自加1,都与$a和$b无关
运行这个程序后,$c的值为3
值传递也是我们普遍使用的方法,下面说一下址传递
所谓址传递,简单说是把一个变量的地址传给另一个变量,这就像给一个人取个小名,你喊他的大名和小名他都答应一样
看下面的这段程序:
Local $a,$b,$c
$a=1
$b=2
$c=0
_Test($a,$b)
$c=$a+$b
MsgBox(0,"Only a Test",$c)
Func _Test(ByRef $x,ByRef $y)
$x=$x+1
$y=$y+1
EndFunc
这段程序中 _Test的变量$x和$y前都添加了ByRef,这说明了$x和$y都是址传递。简单说,$x是$a的小名,$y是$b的小名,对$x和$y的操作相当于对$a和$b直接操作
这段程序运行后,$c的结果为5
[ 本帖最后由 skyfree 于 2008-7-25 16:45 编辑 ] |