数组宣告

数组宣告

数组宣告
[code]
my $i = 0, $j = 0 ,$_m = 0 , $_n = 0;
my @A ;

print "input m : ";
chomp ($_m = <STDIN>);
print "input n : ";
chomp ($_n = <STDIN>);

for ($i = 0; $i < $_m; $i++) {
for ($j = 0; $j < $_n; $j++) {
@A[$i * $_n + $j] = int(rand 20);
}
}
printf("\n\n===================转置前======================\n\n");
for ($i = 0; $i < $_m; $i++) {
for ($j = 0; $j < $_n; $j++) {
printf ("%02d ",$A[$i * $_n + $j]);
}
print "\n\n";
}
printf("\n\n===================转置后======================\n\n");
for ($j = 0; $j < $_n; $j++) {
for ($i = 0; $i < $_m; $i++) {
printf ("%02d ",$A[$i * $_n + $j]);
}
print "\n\n";
}

system("pause");



[/code]




my $i = 0, $j = 0 ,$_m = 0 , $_n = 0; # 我这在用逗号分开是否不好??
my @A; # 使用数组大小不确定可以先这样宣告吗?? 还是这样宣告是有问题的??

谢谢
[quote]my $i = 0, $j = 0.
[quote]my $i = 0, $j = 0 ,$_m = 0 , $_n = 0; # 我这在用逗号分开是否不好??[/quote]
你当然可以这样写,随你愿意:-)
[quote]my @A; # 使用数组大小不确定可以先这样宣告吗?? 还是这样宣告是有问题的??[/quote]
没有问题,perl会根据你的使用动态的增长数组 @A,你不用担心内存分配的问题,这些由perl来做了
但是需要注意的是,在使用操作数组中元素的时候,要确定该元素是有赋值的,不然的话,在打开 warnings(use warnings 或者在 perl 指令后接了 -w 选项)的情况下,使用了未赋值的元素的话会提示[quote]Use of uninitialized value in print at - line XXX.[/quote]
虽然不影响程序执行结果,但是出来这个 warning 也不舒服吧?特别是在写cgi的时候,如果没有注意这个,在 apache 的 error.log 中会有很多这种 warnings ,影响我们查看有用的出错信息