構造体を返す関数

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

構造体を返す関数

C


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

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

gstudent hiroko(char name[], int height, float weight)
{
gstudent tmp;

strcpy(tmp.name, name);
tmp.height = height;
tmp.weight = weight;

return tmp;
}

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

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

sanaka = hiroko("Sanaka", 175, 60.5);

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

return 0;
}

実行結果


R:\>lesson095\project1.exe
氏名:
身長:0
体重:0.000000

氏名:Sanaka
身長:175
体重:60.500000

Delphi


program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils;

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

function hiroko(name:String; height:Integer; weight:Real):TStudent;
begin
result.name := name;
result.height := height;
result.weight := weight;
end;

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

sanaka := hiroko('Sanaka', 175, 60.5);

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

begin
main;
end.

実行結果


S:\>lesson095\project1.exe
氏名:
身長:1245120
体重:0.00

氏名:Sanaka
身長:175
体重:60.50