home > 写経編 > 柴田望洋『明解C言語 入門編』 > 6. 関数 >

ForNext

Only Do What Only You Can Do

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

VBScript

JScript

Perl

更新日 : 2010.10.18
$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

PHP

更新日 : 2010.11.03
<?php
$NINSU = 5;

function int_set($no, $vc)
{
    for ($i = 0; $i < $no; $i++)
    {
        $vc[$i] = $i;
    }
}

function int_set2($no, &$vc)
{
    for ($i = 0; $i < $no; $i++)
    {
        $vc[$i] = $i;
    }
}

$ary = array();

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

int_set($NINSU, $ary);

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

int_set2($NINSU, $ary);

print "関数 呼び出し後\n";
for ($i = 0; $i < $NINSU; $i++)
{
    printf("  ary[%d] = %d\n", $i, $ary[$i]);
}
?>
L:\>php lesson_06_048.php
関数 呼び出し前
  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

Python

更新日 : 2010.11.17
# coding: Shift_JIS

NINSU = 5

def int_set(no, vc):
    for i in range(0, no, 1):
        vc[i] = 0

ary = range(NINSU);

print "関数 呼び出し前"
for i in range(0, NINSU, 1):
    print "  ary[%d] = %d" % (i, ary[i])

int_set(NINSU, ary)

print "関数 呼び出し後"
for i in range(0, NINSU, 1):
    print "  ary[%d] = %d" % (i, ary[i])
N:\>python lesson_06_048.py
関数 呼び出し前
  ary[0] = 0
  ary[1] = 1
  ary[2] = 2
  ary[3] = 3
  ary[4] = 4
関数 呼び出し後
  ary[0] = 0
  ary[1] = 0
  ary[2] = 0
  ary[3] = 0
  ary[4] = 0

Ruby

更新日 : 2010.11.01
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

PowerShell

Scala

F#

C

更新日 : 2010.10.08
#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

C++

C++Builder

VC++

C#

Java

更新日 : 2010.11.05
class Lesson048 {
    static final int NINSU = 5;

    public static void main(String[] args) {
        int i = NINSU;
        int[] ary = new int[NINSU];

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

        int_set(ary, i);

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

    static void int_set(int vc[], int no)
    {
        for (int i = 0; i < no; i++)
            vc[i] = i;

        no = 0;
    }
}
L:\>java Lesson048
関数 呼び出し前
  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

Objective-C

D

VB

VB.NET

Delphi

更新日 : 2010.09.24
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

Ada

PL/SQL

T-SQL

関数型

inserted by FC2 system