为什么$#比数组中的实际元素数少一个?

时间:2011-08-22 09:05:06

标签: arrays perl

有谁知道为什么$#a比数组中实际的元素数少一个?

$ perl -we '@a=(1,2);print $#a'
1

5 个答案:

答案 0 :(得分:12)

这是最后一项的索引,因为数组从零开始(除非你搞好最好的东西),$#a比数组的长度少一个。

答案 1 :(得分:11)

我想这是因为它是数组中最后一个元素的索引。由于数组索引从0开始,因此需要添加一个以获取数组中元素的总数。

注意:您也可以这样做来查找数组的计数:

@arr = ("one", "two");
$count =  @arr;
print $count;

答案 2 :(得分:3)

数组@a = ("a","b","c");

$的值#a =最后一个元素的索引(= 2)。

$a[0] = "a"; $a[1] = "b"; $a[2] = "c";

如果要获取数组中的元素数,可以将数组分配给标量 像

$arrayLength = @a;#(= 3)

希望这有助于你

答案 3 :(得分:2)

$#array用于查找数组中最后一个元素的索引。

在上面的示例中,它是位置1 - 因为数组中的索引在perl中从0开始。

答案 4 :(得分:2)

每个人都在告诉你它返回的是什么(你已经知道),但你问为什么它会返回它的作用。

不幸的是,它不可能回答为什么它会返回它的功能。也许是因为它使以下更容易?

for (0..$#a) {
   ...
}