在C语言中,指针的使用给我们带来了很大的方便,但是在Perl中没有直接提供这样的数据类型,在某些情况下就存在一些很不方便的地方。
例如:在调用函数时,如果参数值和返回值比较多,而且非常复杂的时候,仅仅是参数栈或返回值栈是不够用的。这时候,有两种解决方法,一种是使用引用调用,这样可以传递象数组、哈希数组一类的数据,另外一种就是我要着重介绍的“指针”,主要用来传递复杂的结构,例如多维数组。下面,我用多维数组为例:
多维数组指针的创建非常简单,具体语句如下:
my $multi_array=[];
这时,$multi-array就是一个指针,它的内容是undefined. 下一步我们要给它赋值,语句如下:
@{$multi_array}=((a,...,z),(1,...,10),($a,...,$xx));
这时,$multi-array就成了一个指向二维数组的指针,当然,如果必要的话,你可以定义更多的维数。如何使用这个二维数组的元素呢?
$multi_array->[0][1] #数组第一维,第二个元素
如何使用一行元素呢?
@{$multi_array->[0]} #二维数组的第一行元素
这样,你就可以方便的借助指针使用多维数组了。标量$multi_array就象一个普通的标量,在函数调用和返回时,就可以直接使用了。