子过程实践
来源:互联网 发布:c语言课程设计案例 编辑:程序博客网 时间:2024/05/17 05:08
1。数组输入到子过程的是数组存储第一个元素的地址。也就是说不论原始数组中有多少元素,输入的@_中只有一个元素,首地址。接受首地址的变量必须是加括号的比如"($aa)"不能是“$aa"。
而且遍历@_是没有任何意义的(其中只有一个元素,首地址)。" foreach ( @_ ) "
这个和列表有着本质的区别,列表不论输入的元素有多少,输进去的依旧是列表元素,不是列表所在的地址。
可以用$_[$i]表示列表中的元素,但是对于数组却是首地址,不是地址中存放的元素的值。
sub change {
my ($aa) = @_;
my $num = @$aa;
for ( my $i=0; $i<$num; $i++ ) {
print $_[$i];#会报错,因为@_中只有一个元素,其他的都是非定义的值。
}
foreach ( @$aa ) {
tr/A-Z/a-z/; #对地址中的元素进行大小写替换,原始数据也跟着变换。
print "$_\n";
}
}
my @aa = ( "AAAAAAAAAAAAAAAAAAAAAA", "TTTTTTTTTTTTTTTTTTTTTT" );
change ( \@aa );
foreach my $dd ( @aa ) {
print "$dd\n"; #输出结果为小写,子过程已经修改地址中的值。
}
aaaaaaaaaaaaaaaaaaaaaa
tttttttttttttttttttttt
aaaaaaaaaaaaaaaaaaaaaa
tttttttttttttttttttttt
2。不修改原来数值的方式,依次把输入值赋值到新的地址。本质上说,要想不改变原始值,就必须把原始值备份到新的地址,然后在新的地址进行数值操作。
sub change {
my ($aa) = @_;
my @tt;
push @tt, $$aa[0]; #把数值赋值到新的地址
push @tt, $$aa[1];
foreach my $bb ( @tt ) {
$bb =~ tr/A-Z/a-z/;
print "$bb\n";
}
}
my @aa = ( "AAAAAAAAAAAAAAAAAAAAAA",
"TTTTTTTTTTTTTTTTTTTTTT" );
change ( \@aa );
foreach my $dd ( @aa ) {
print "$dd\n";
}
aaaaaaaaaaaaaaaaaaaaaa
tttttttttttttttttttttt
AAAAAAAAAAAAAAAAAAAAAA
TTTTTTTTTTTTTTTTTTTTTT
- 子过程实践
- 子过程
- 编译原理程序设计实践(六) 语句和子过程的处理代码
- 存储过程---实践
- RUP测试过程实践
- RUP测试过程实践
- RUP测试过程实践
- 存贮过程实践
- 软件过程改进实践
- 存储过程---实践
- 软件过程框架实践
- RUP测试过程实践
- 软件过程框架实践
- Scrum 过程实践小记
- 存储过程实践
- Scrum敏捷过程实践
- DevOps过程实践
- matplotlib实践过程总结
- 【ACM】杭电1200:To and Fro
- 注意啦,笔记本是无线的,虚拟机上网方式莫用NAT,好难整。
- webrtc
- zoj1037-Gridland
- ASTA的学习
- 子过程实践
- section
- html5
- 假如我来架构12306网站
- torque (以前的 OpenPBS) 安装
- xerces-c,c++解析xml,解析xml字符串
- DDR之ODT
- CentOS6 上 NIS 设置
- 博客漏洞