perl数组硬引用_perl引用和数组 - SibylY的个人空间 - OSCHINA - 中文开源技术交流社区...
一、引用
常见数据类型的引用定义:
数据类型 定义 举例
标量变量 \$Var $Pointer = \$Var
数组 \@Array $Pointer = \@Array
哈希变量 \%Hash $Pointer = \%Hash
文件句柄 \*FILEHANDLE $Pointer = \
常量 \常量 $Pointer = \3.1415926
子程序 \&SubRoutine $Pointer = \&SubRoutine
匿名数组 [ LIST ] $Pointer = [ “Smith”,“Jack”,“Jimmy”,“ZhaZha”]
匿名哈希变量 { Key=>Value } $Pointer = { Key1=>Value1,Key2=>Value2}
匿名子程序 sub {} $Pointer = sub { printf( “Hello,Perl World\n”);}
对象引用 bless $self;
reference是另一个变量的地址。reference可以指向array,hash,或perl代码段。reference使perl代码运行更快。
二、数组的引用
1)array的reference
$array_ref = \@array;
print $array_ref;#显示如下ARRAY(0x1a2b3c);
sub add_numbers{
my $array_ref= shift;
}
@numbers = (11,2,3,45);
$array_ref = add_numbers(\@numbers);
以上代码中,需要对array的reference进行dereference,然后才可以使用array中的元素。
以下是传递array的reference到subroutine的优点:
*如果array传递给subroutine,perl将整个array重新copy到@_中,当array比较大时,将非常低效;
*当我们需要在subroutine中修改原来的array时,需要传递array的reference;
*reference其实是构造复杂数据结构的本质。
2)array的reference的dereference
在subroutine中,我们可以使用@{$array_ref}来dereference;取得第一个元素${$array_ref}[0];
如果只是dereference一个简单的scalar变量,可以忽略括号,如下:
@$array_ref #same as @{$array_ref}
$$array_ref #same as ${$array_ref}
三、hash的reference和dereference
%author = (
'name'=>'Harsha',
'designation' => 'Manager'
);
$hash_ref = \%author;
$name = ${$hash_ref}{name}; #same as my $name = $hash_ref->{name}
my @keys = keys%{$hash_ref}; #same as my @keys = keys%author;
my $hash_ref = {
'name' =>"coco",
'designation' => 'Manager'
};#匿名引用
perl数组硬引用_perl引用和数组 - SibylY的个人空间 - OSCHINA - 中文开源技术交流社区...相关推荐
- java 数组减除值_java数组操作 - osc_hwpd2zko的个人空间 - OSCHINA - 中文开源技术交流社区...
什么是数组: 程序 = 算法+数据结构 算法:解决问题的步骤,流程(顺序,分支,循环) 数据结构:将数据按照某种特定的结构来保存 数怎么存 设计良好的,合理的数据结构可以导致好的算法 数组:就是一种最 ...
- python数组和链表的区别_数组和链表的区别 - toddler的个人空间 - OSCHINA - 中文开源技术交流社区...
数组是将元素在内存中连续存放,由于每个元素占用内存相同,可以通过下标迅速访问数组中任何元素.但是如果要在数组中增加一个元素,需要移动大量元素,在内存中空出一个元素的空间,然后将要增加的元素放在其中.同 ...
- linux 变量引用 和 变量的自动类型转换 c++,c++类型转换 - memristor的个人空间 - OSCHINA - 中文开源技术交流社区...
C风格的强制类型转换(Type Cast) 不管什么类型的转换统统是:TYPE b = (TYPE)a. 缺点: 可以在任意类型之间转换,比如你可以把一个指向const对象的指针转换成指向非const ...
- c语言怎样将字符串存入指针属猪,字符数组全排列 - Lu堅的个人空间 - OSCHINA - 中文开源技术交流社区...
// win32Console.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include //参数为引用,函数调用多,所以定义我内联 ...
- php循环遍历数组保存数据库,php数组循环遍历 - 与狼共舞红队的个人空间 - OSCHINA - 中文开源技术交流社区...
下面这三种是常用的 $_arr=array(); foreach($_arr as $key=>$value){ var_dump($key,$value); echo " " ...
- c语言 开辟复数指针数组,指针和数组 - llwwzz的个人空间 - OSCHINA - 中文开源技术交流社区...
指针的几个要点: 一 指针的定义,赋值 要区分: int a; int *p = &a; 这是定义的时候初始化,即赋值 ======================= int a; int * ...
- android 数组排重方法,js数组去重方法集合 - osc_779ncf3o的个人空间 - OSCHINA - 中文开源技术交流社区...
//第一种方法,新建一个空数组,将原来的数组循环逐个与新数组的成员做比较,如果新数组没有该元素就push进来 var arr = ['a', 1, 1, 1, 2, 4, 4, 'b', 'c', ' ...
- linux c 数组拷贝,C++对数组进行复制 - osc_8iux0cyz的个人空间 - OSCHINA - 中文开源技术交流社区...
C++ 风格的复制操作 使用STL中的copy算法 int a[] = {1,2,3,4,5}; int b[5]; std::copy(std::begin(a),std::end(a),std:: ...
- java数组输出是地址_java数组输出 - SuperPcf的个人空间 - OSCHINA - 中文开源技术交流社区...
java数组输出 输出一个数组中的元素,我们通常用for循环来做,比如: [java] view plaincopy在CODE上查看代码片派生到我的代码片 package test; public c ...
最新文章
- Ubuntu 系统开机黑屏提示the root filesystem on /dev/sdb2 requires a manual fsck
- 马云最新演讲:未来10年,人类将面临AI、IoT和区块链等三大技术巨大挑战!
- oracle rman catalogo,ORACLE 11g RMAN备份恢复--catalog
- 已知一个函数f可以等概率的得到1-5间的随机数,问怎么等概率的得到1-7的随机数...
- 用折半查找法查找某一字符在字符串中的位置
- Matlab线性规划求解
- 松下电视切换html,松下等离子电视如何用HDMI连接电脑?
- ERROR 1018 (HY000): Can‘t read dir of ‘.‘ (errno: 13 - Permission denied)
- 左手招新,右手裁员,2019开年就业形势扑朔迷离
- nokia专业显示器测试软件,Nokia Monitor Test(
- 平板电脑触摸屏市场现状及未来发展趋势
- 引用与引用作为函数的参数
- DOS时代往事的回忆
- 计算机与汽车智能信息化管理,谈计算机控制系统在汽车行业的应用
- 2020-10-18大二第七周
- 以太网口差分电平_百兆以太网接口高速PCB布局布线指南
- Camtasia Studio2021-激活码-序列号-秘钥中文版下载安装最新详情介绍
- 新站是如何做到百度秒录入
- 【华人学者风采】张磊 香港理工大学
- 灵遁者小说:你无处可藏