加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Perl笔记 硬引用(指针)的创建和应用场景

发布时间:2020-12-15 23:57:57 所属栏目:大数据 来源:网络整理
导读:硬引用(hard reference),也叫指针(pointer),它本身是一个标量型变量,它的值是其他变量的地址,我们可以通过反斜杠()运算符来创建指针。 举例: $name = "woniu";$p = $name;print $name; #这里我们得到的 是 woniuprint $p; #这里我们得到的是$name



硬引用(hard reference),也叫指针(pointer),它本身是一个标量型变量,它的值是其他变量的地址,我们可以通过反斜杠()运算符来创建指针。
举例:

$name = "woniu";
$p = $name;
print $name; #这里我们得到的 是 woniu
print $p; #这里我们得到的是$name在内存中的地址,如SCALAR(0xb067c)
$name = "woniu";
$p = $name;
print $name; #这里我们得到的 是 woniu
print $p; #这里我们得到的是$name在内存中的地址,如SCALAR(0xb067c)

@str_list = qw(a b c d);
$p_str = @str_list;
print $p_str; #这里我们得到的是@str_list在内存中对应的地址,如ARRAY(0x322c6c).

从上面的例子可以看到如何创建指针以及指针是那种变量类型,以及指针变量的值。 在打印指针变量的时候我们不但可以看到一个十六进制的地址,还能看到这个地址上保存的数据的数据类型,在我们的例子中$p的值是一个SCALAR类型变量。
那么如何访问指针地址呢


--------------------------------------------一个典型的应用场景:-----------------------------------------------------------------

? ? ? ?当一个子例程接收参数的时候,会把所有的参数都保存到一个特殊的数组@_里面去,假如把两个数组一起传递进去的话,那么这两个数组都将保存到@_中,并且练成一个单个列表。 问题在于如果我们不知道数组的长度的话,在子例程中就无法拆分这两个数组了,使用指针参数将能很好的解决这个问题。
? ? ? ?具体的操作办法就是不直接传递两个数组,而是传递这两个数组的指针,然后在子例程里面按照指针地址访问。

@example = (1..4);

@b = (a..d);
$p_b = @b;

sub display{
	print @_."wwwwwwwwwwn";
	my ($aa,$bb)=(shift,shift);

	print @$aa;#打印1234
	print "@$bb"."n";#打印a b c d
}

display(@example,@b);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读