構造体の受け渡し

明解C言語 入門編 > 12. 構造体 >

構造体の受け渡し

C


#include <stdio.h>
#include <string.h>

struct gstudent
{
char name[20];
int height;
float weight;
};

void hiroko(struct gstudent* std)
{
(*std).height = 180;
(*std).weight = 80;
}

int main(int argc, char* argv[])
{
struct gstudent sanaka = {"Sanaka", 175};

printf("氏名:%s\n", sanaka.name);
printf("身長:%d\n", sanaka.height);
printf("体重:%f\n", sanaka.weight);
puts("");

hiroko(&sanaka);

printf("氏名:%s\n", sanaka.name);
printf("身長:%d\n", sanaka.height);
printf("体重:%f\n", sanaka.weight);

return 0;
}

実行結果


R:\>lesson092\project1.exe
氏名:Sanaka
身長:175
体重:0.000000

氏名:Sanaka
身長:180
体重:80.000000

Delphi


program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils;

type
TStudent = record
name: String;
height: Integer;
weight: Real;
end;

procedure hiroko(var std:TStudent);
begin
std.height := 180;
std.weight := 80;
end;

procedure main();
var
sanaka: TStudent;
begin
sanaka.name := 'Sanaka';
sanaka.height := 175;

Writeln(Format('氏名:%s', [sanaka.name]));
Writeln(Format('身長:%d', [sanaka.height]));
Writeln(Format('体重:%f', [sanaka.weight]));
Writeln('');

hiroko(sanaka);

Writeln(Format('氏名:%s', [sanaka.name]));
Writeln(Format('身長:%d', [sanaka.height]));
Writeln(Format('体重:%f', [sanaka.weight]));
end;

begin
main;
end.

実行結果


S:\>lesson092\project1.exe
氏名:Sanaka
身長:175
体重:0.00

氏名:Sanaka
身長:180
体重:80.00

Perl
sub hiroko
{
    my ($std) = @_;
    
    $$std{"height"} = 180;
    $$std{"weight"} =  80;
}

%sanaka = (name => "Sanaka", height => 175);

printf("氏名:%s\n", $sanaka{"name"});
printf("身長:%d\n", $sanaka{"height"});
printf("体重:%f\n", $sanaka{"weight"});

print "\n";

&hiroko(\%sanaka);

printf("氏名:%s\n", $sanaka{"name"});
printf("身長:%d\n", $sanaka{"height"});
printf("体重:%f\n", $sanaka{"weight"});

実行結果

L:\>perl lesson_12_092.pl
氏名:Sanaka
身長:175
体重:0.000000

氏名:Sanaka
身長:180
体重:80.000000

Ruby
def hiroko(std)
    std["height"] = 180
    std["weight"] =  80
end

sanaka = {"name" => "Sanaka", "height" => 175}

printf("氏名:%s\n", sanaka["name"])
printf("身長:%d\n", sanaka["height"])
printf("体重:%f\n", sanaka["weight"].to_f)
puts ""

hiroko(sanaka)

printf("氏名:%s\n", sanaka["name"])
printf("身長:%d\n", sanaka["height"])
printf("体重:%f\n", sanaka["weight"])

実行結果

L:\>ruby l:\lesson_12_092.rb
氏名:Sanaka
身長:175
体重:0.000000

氏名:Sanaka
身長:180
体重:80.000000