AHK函数参数是传值还是传引用?这究竟是怎样的机制?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1227个文字,预计阅读时间需要5分钟。
在C/C++中,传值和传引用是函数参数传递的两种方式。传值是将参数的实际值复制到函数内部,而传引用则是直接使用参数的地址,从而在函数中修改原始数据。
在AutoHotkey(ahk)中,参数传递的方式与C/C++有所不同。在ahk中,所有参数都是通过引用传递的。这意味着,函数内部对参数的任何修改都会反映到原始数据上。
以下是对应于您给出的代码的简化版:
foo(arg) { arg :=2 print(arg) a :=1 foo(a) print(a) print(1 p)}
输出:
22
1p
这段代码展示了在ahk中,参数`arg`通过引用传递,因此当`arg`被赋值为2时,原始变量值也会改变。同样,函数内部对变量`a`的修改也会影响外部变量。
在 C/C++ 中,传值和传引用是函数参数传递的两种方式,在ahk中参数是如何传递的?回答这个问题前,不如先来看两段代码。
代码段1:
foo(arg)
{
arg:=2
print(arg)
}
a:=1
foo(a) ;输出2
print(a) ;输出1
print(_str="")
{
if IsObject(_str)
{
out:="["
for index,element in _str
out.=element . ","
out.="]"
MsgBox %out%
}
else
MsgBox %_str%
}
看了代码段1的同学可能会说参数是值传递。
本文共计1227个文字,预计阅读时间需要5分钟。
在C/C++中,传值和传引用是函数参数传递的两种方式。传值是将参数的实际值复制到函数内部,而传引用则是直接使用参数的地址,从而在函数中修改原始数据。
在AutoHotkey(ahk)中,参数传递的方式与C/C++有所不同。在ahk中,所有参数都是通过引用传递的。这意味着,函数内部对参数的任何修改都会反映到原始数据上。
以下是对应于您给出的代码的简化版:
foo(arg) { arg :=2 print(arg) a :=1 foo(a) print(a) print(1 p)}
输出:
22
1p
这段代码展示了在ahk中,参数`arg`通过引用传递,因此当`arg`被赋值为2时,原始变量值也会改变。同样,函数内部对变量`a`的修改也会影响外部变量。
在 C/C++ 中,传值和传引用是函数参数传递的两种方式,在ahk中参数是如何传递的?回答这个问题前,不如先来看两段代码。
代码段1:
foo(arg)
{
arg:=2
print(arg)
}
a:=1
foo(a) ;输出2
print(a) ;输出1
print(_str="")
{
if IsObject(_str)
{
out:="["
for index,element in _str
out.=element . ","
out.="]"
MsgBox %out%
}
else
MsgBox %_str%
}
看了代码段1的同学可能会说参数是值传递。

