Chapter 11

構造体

Nanase
Nanase
2020.12.20に更新

プロトタイプ(ひな形)の定義

複数の変数をひとまとまりにし、1つの型として扱えるようにしたものを構造体と言います。構造体では1つの要素に異なる型の複数の変数を定義することができます。構造体の役割は、変数を1つデータ(オブジェクト)にまとめることで、プログラムの可読性を向上させたり、プログラムを再利用し易くすることです。

int main(void)の前に、構造体のプロトタイプを定義しておく必要があります。

main関数の中で使う構造体変数(プロトタイプの「分身」)の定義

次の2つの方法がある。
① main関数内で定義する方法
abcはプロトタイプ名です。
xyzはmainの中で使う構造体変数です。

#include <stdio.h>
struct abc{
  char name[15];
  int pop;
  double den;
};
int main(void){
  struct abc xyz;

② プロトタイプ(ひな型)の定義直後に記述する方法

abcはプロトタイプ名です。
xyzはmainの中で使う構造体変数です。

#include <stdio.h>
struct abc{
  char name[15];
  int pop;
  double den;
} xyz;
int main(void){

構造体型配列の定義

#include <stdio.h>
struct abc{
  char name[15];
  int pop;
  double den;
};
int main(void){
  struct abc xyz[100];

構造体変数の参照

次の2つの方式がある。
① ピリオドを使う

#include <stdio.h>
struct abc{
  char name[15];
  int pop;
  double den;
};
int main(void){
  struct abc xyz, stu;
  scanf("%s %d %lf", xyz.name, &xyz.pop, &xyz.den);
  stu.pop = xyz.pop; stu.den = xyz.den;

② アロー演算子->を使う

#include <stdio.h>
struct abc{
 char name[15];
 int pop;
 double den;
} xyz;
int main(void){
 struct abc *sp;
 sp = &xyz;
 sp->pop = 128;
 sp->den = 3.15;

構造体配列変数

#include <stdio.h>
struct abc{
  char name[15];
  int pop;
  double den;
};
int main(void){
  struct abc xyz[100];
  for(i=0; i<100; i++){
    scanf("%s %d %lf",xyz[i].name, &xyz[i].pop, &xyz[i].den);
  }