--- title: 『新版C言語プログラミングレッスン 入門編』第10章・構造体 author: kazu634 date: 2008-05-01 url: /2008/05/01/_966/ 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 ---
複数の異なる型の変数を一つにまとめたもの
たとえば、学校の成績処理を考えるとしましょう。ある学生を処理しようとしたとき、その学生は「複数の異なる型」のデータを持っています。つまり
- 出席番号
- 氏名
- 国語の点数
- 数学の点数
- 英語の点数
などです。このとき、氏名は文字の配列、出席番号や点数は整数…、と別々の変数にして取り扱ってもかまいません。しかし、出席番号・氏名・点数はある一人の学生のデータなどですから、できれば一つにまとめて扱いたいものです。「構造体」はそんなときに使うのです。
#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"); }