配列の受け渡し

明解C言語 入門編 > 10. ポインタ >

配列の受け渡し

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;
}

int main(int argc, char* argv[])
{
int i = NINSU;
int j;
int ary[NINSU] = {0};

printf("関数 呼び出し前\n");
for (j = 0; j < NINSU; j++)
printf(" ary[%d] = %d\n", j, ary[j]);

int_set(ary, i);

printf("関数 呼び出し後\n");
for (j = 0; j < NINSU; j++)
printf(" ary[%d] = %d\n", j, ary[j]);

return 0;
}

実行結果


R:\>lesson079\Project1.exe
関数 呼び出し前
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

Delphi


program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils;

procedure int_set(vc:PInteger; min: Integer; max: Integer);
var
i: Integer;
begin
for i := min to max do
begin
vc^ := i;
Inc(vc);
end;
end;

const
NINSU = 5;
var
i: Integer = NINSU;
j: Integer;
ary: array[1..NINSU] of Integer = (0, 0, 0, 0, 0);
begin
Writeln('関数 呼び出し前');
for j := 1 to NINSU do
Writeln(Format(' ary[%d] = %d', [j, ary[j]]));

int_set(@ary, Low(ary), High(ary));

Writeln('関数 呼び出し後');
for j := 1 to NINSU do
Writeln(Format(' ary[%d] = %d', [j, ary[j]]));
end.

実行結果


S:\>lesson079\Project1.exe
関数 呼び出し前
ary[1] = 0
ary[2] = 0
ary[3] = 0
ary[4] = 0
ary[5] = 0
関数 呼び出し後
ary[1] = 1
ary[2] = 2
ary[3] = 3
ary[4] = 4
ary[5] = 5