Arrays \@array在Perl中是什么意思?
我有一些Perl代码,其中我注意到数组与前导反斜杠一起使用,如Arrays \@array在Perl中是什么意思?,arrays,perl,reference,Arrays,Perl,Reference,我有一些Perl代码,其中我注意到数组与前导反斜杠一起使用,如\@array 有人能解释一下它是什么意思吗?它意味着它是对数组的引用 这就很好地解释了符号将返回对所提供数组的引用(或指针),因此: $arrayref = \@array 将$arrayref作为对@array的引用-这类似于在C中使用*p指针表示法。数组引用主要用作子例程的参数。在没有引用的情况下,将数组@a(使用元素1、2、3)传递给sub与将1、2和3分别传递给sub几乎相同。使用\@array,sub可以看到整个数组,例
\@array
有人能解释一下它是什么意思吗?它意味着它是对数组的引用
这就很好地解释了符号将返回对所提供数组的引用(或指针),因此:
$arrayref = \@array
将
$arrayref
作为对@array
的引用-这类似于在C中使用*p
指针表示法。数组引用主要用作子例程的参数。在没有引用的情况下,将数组@a
(使用元素1、2、3)传递给sub与将1、2和3分别传递给sub几乎相同。使用\@array
,sub可以看到整个数组,例如,显式确定其长度,操纵它以便调用方可以看到更改,这种能力的代价是,sub在访问数组元素时必须使用更复杂的语法:$$a[0]
而不是$a[0]
请不要混淆指针和引用*(p+3)
在C语言中完全有效(只要p
指向至少4个元素的有效存储)。你认为\@array+3
是什么?首先,您似乎认为C中的指针和数组是相同的,然后,您将C指针与Perl引用混淆了。误导性。添加对数组的引用作为数组是很好的:@{$arrayref}
子例程参数总是列表。如果执行func(@ary)
,则@ary
的内容将作为平面列表传递。在func
中,您知道传递了多少个参数(因为参数在@
中)。如果执行func(\@ary)
,则func
将收到一个由单个参数组成的列表。您可以使用标准箭头符号访问func
的第一个参数所引用的匿名数组的第三个元素:$\u0]->[2]
。当然,您通常会首先将该ref放入自己的变量中:my($ary)=@;我的$is_frobly=$ary->[2]代码>等