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



硬引用(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 @_."wwwwwwwwww\n";
	my ($aa,$bb)=(shift,shift);

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

display(\@example,\@b);


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值