受け取った配列への書き込み

明解C言語 入門編 > 6. 関数 >

受け取った配列への書き込み

Perl
$NINSU = 5;

sub int_set
{
    (@vc) = @_;
    $no = $vc[0];

    for (1..$no)
    {
        $vc[$_] = $_;
    }
}

sub int_set2
{
    ($no, $vc) = @_;

    for (0..$$no - 1)
    {
        $$vc[$_] = $_;
    }
}

@ary = ();

print "関数 呼び出し前\n";
for (0..$NINSU - 1)
{
    printf("  ary[%d] = %d\n", $_, @ary[$_]);
}

&int_set($NINSU, @ary);

print "関数 呼び出し後\n";
for (0..$NINSU - 1)
{
    printf("  ary[%d] = %d\n", $_, @ary[$_]);
}

&int_set2(\$NINSU, \@ary);

print "関数 呼び出し後\n";
for (0..$NINSU - 1)
{
    printf("  ary[%d] = %d\n", $_, @ary[$_]);
}

実行結果

L:\>perl lesson_06_048.pl
関数 呼び出し前
ary[0] = 0
ary[1] = 0
ary[2] = 0
ary[3] = 0
ary[4] = 0
関数 呼び出し後
ary[0] = 0
ary[1] = 0
ary[2] = 0
ary[3] = 0
ary[4] = 0
関数 呼び出し後
ary[0] = 0
ary[1] = 1
ary[2] = 2
ary[3] = 3
ary[4] = 4