受け取った配列への書き込み
明解C言語 入門編 > 6. 関数 >
受け取った配列への書き込み
C
#include <stdio.h>#define NINSU 5
void int_set(int vc[], int no)
{
int i;
for (i = 0; i < no; i++)
vc[i] = i;no = 0;
}int main(int argc, char* argv[])
{
int i = NINSU;
int j;
int ary[NINSU] = {0};printf("関数 呼び出し前\n");
printf(" i = %d\n", i);
for (j = 0; j < NINSU; j++)
printf(" ary[%d] = %d\n", j, ary[j]);int_set(ary, i);
printf("関数 呼び出し後\n");
printf(" i = %d\n", i);
for (j = 0; j < NINSU; j++)
printf(" ary[%d] = %d\n", j, ary[j]);return 0;
}
実行結果
R:\>lesson048\project1.exe
関数 呼び出し前
i = 5
ary[0] = 0
ary[1] = 0
ary[2] = 0
ary[3] = 0
ary[4] = 0
関数 呼び出し後
i = 5
ary[0] = 0
ary[1] = 1
ary[2] = 2
ary[3] = 3
ary[4] = 4
Delphi
program Project1;{$APPTYPE CONSOLE}
uses
SysUtils;procedure int_set1(vc:array of Integer; no: Integer);
var
i: Integer;
begin
for i := Low(vc) to High(vc) do
vc[i] := i;no := 0;
end;procedure int_set2(var vc:array of Integer; var no: Integer);
var
i: Integer;
begin
for i := Low(vc) to High(vc) do
vc[i] := i;no := 0;
end;const
NINSU = 5;
var
i: Integer = NINSU;
j: Integer;
ary: array[1..NINSU] of Integer = (0, 0, 0, 0, 0);
begin
writeln('関数 呼び出し前');
writeln(format(' i = %d', [i]));
for j := 1 to NINSU do
writeln(format('ary[%d] = %d', [j, ary[j]]));int_set1(ary, i);
writeln('関数 呼び出し後 1');
writeln(format(' i = %d', [i]));
for j := 1 to NINSU do
writeln(format('ary[%d] = %d', [j, ary[j]]));int_set2(ary, i);
writeln('関数 呼び出し後 2');
writeln(format(' i = %d', [i]));
for j := 1 to NINSU do
writeln(format('ary[%d] = %d', [j, ary[j]]));
end.
実行結果
S:\>lesson048\project1.exe
関数 呼び出し前
i = 5
ary[1] = 0
ary[2] = 0
ary[3] = 0
ary[4] = 0
ary[5] = 0
関数 呼び出し後 1
i = 5
ary[1] = 0
ary[2] = 0
ary[3] = 0
ary[4] = 0
ary[5] = 0
関数 呼び出し後 2
i = 0
ary[1] = 1
ary[2] = 2
ary[3] = 3
ary[4] = 4
ary[5] = 5
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
Ruby
NINSU = 5 def int_set(no, vc) for i in 0..(no - 1) vc[i] = i end end ary = [] puts "関数 呼び出し前" for i in 0..(NINSU - 1) printf(" ary[%d] = %d\n", i, ary[i]) end int_set(NINSU, ary) puts "関数 呼び出し後" for i in 0..(NINSU - 1) printf(" ary[%d] = %d\n", i, ary[i]) end
実行結果
L:\>ruby l:\lesson_06_048.rb
関数 呼び出し前
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