--- title: 『新版C言語プログラミングレッスン 入門編』第10章・構造体 author: kazu634 date: 2008-05-01 wordtwit_post_info: - 'O:8:"stdClass":13:{s:6:"manual";b:0;s:11:"tweet_times";i:1;s:5:"delay";i:0;s:7:"enabled";i:1;s:10:"separation";s:2:"60";s:7:"version";s:3:"3.7";s:14:"tweet_template";b:0;s:6:"status";i:2;s:6:"result";a:0:{}s:13:"tweet_counter";i:2;s:13:"tweet_log_ids";a:1:{i:0;i:3965;}s:9:"hash_tags";a:0:{}s:8:"accounts";a:1:{i:0;s:7:"kazu634";}}' categories: - C - Programming ---

構造体とは?

複数の異なる型の変数を一つにまとめたもの

Amazon.co.jp: 新版C言語プログラミングレッスン 入門編: 結城浩: 本

たとえば、学校の成績処理を考えるとしましょう。ある学生を処理しようとしたとき、その学生は「複数の異なる型」のデータを持っています。つまり

などです。このとき、氏名は文字の配列、出席番号や点数は整数…、と別々の変数にして取り扱ってもかまいません。しかし、出席番号・氏名・点数はある一人の学生のデータなどですから、できれば一つにまとめて扱いたいものです。「構造体」はそんなときに使うのです。

Amazon.co.jp: 新版C言語プログラミングレッスン 入門編: 結城浩: 本

使い方の例

#include <stdio.h>
#include <string.h>
/* プロトタイプ宣言 */
struct student
{
int id;
char name[20];
int japanese;
int math;
int english;
};
int main(void);
void prt_student(struct student s);
/* 関数 main */
int main(void)
{
struct student taro;
struct student jiro;
taro.id = 10;
strcpy(&taro.name[], "Yamada");
taro.japanese = 100;
taro.math = 85;
taro.english = 60;
jiro = taro;
jiro.id = 11;
strcpy(&jiro.name[], "Jiro");
jiro.japanese = 99;
prt_student(taro);
prt_student(jiro);
return();
}
/* 関数 prt_student */
void prt_student(struct student s)
{
printf ("ID: %d\n", s.id);
printf ("Name: %s\n", &s.name[]);
printf ("Japanese: %d\n", s.japanese);
printf ("Math: %d\n", s.math);
printf ("English: %d\n", s.english);
printf ("Total: %d\n", s.japanese + s.math + s.english);
printf ("\n");
}