+ -
当前位置:首页 → 问答吧 → 请问这句话是啥意思啊 push @d, [ @row ];

请问这句话是啥意思啊 push @d, [ @row ];

时间:2011-04-13

来源:互联网

是把row这个数组的地址赋给数组d吗

作者: hbhswxy   发布时间: 2011-04-13

不是  是把row的内容复制一遍  然后再把新地址push到d里面
push @d, \@row  这个才是

作者: guap514   发布时间: 2011-04-13

回复 hbhswxy
push @row的引用 into @d as the last member of array.

作者: albertd   发布时间: 2011-04-13

  1. use strict;

  2. my @list = (1,2,3,4,5,6);
  3. my @arr;

  4. push @arr,[@list];
  5. $list[5] = 7;
  6. print $arr[0]->[5],"\n";

  7. push @arr,\@list;
  8. $list[5] = 8;
  9. print $arr[1]->[5],"\n";
  10. #输出是6和8
复制代码
[@list]和\@list是不同的,[@list]是新构造了一个数组引用,和原来的数组在内存中是不同地址。而\@list是直接取引用,该引用指向数组@list,所以是同一块内存地址。

作者: wxlfh   发布时间: 2011-04-13