スライド 1

情報処理演習C2
構造体について
1
構造体とは
• いくつかの変数を、ひとまとめにしたもの。
// 車のタイプ
int racingcar_type;
struct RacingCar {
// 車のタイプ
int type;
// 車の色
int racingcar_color;
// 車の色
int color;
};
2
#include <stdio.h>
int main()
{
struct RacingCar {
int type;
int color;
};
RacingCar c1;
RacingCar c2;
c1.type = 10;
c1.color = 2;
c2.type = 20;
c2.color = 5;
構造体の定義
構造体変数の作成
構造体変数への代入
printf("c1 type=%d, color=%d\n",c1.type,c1.color);
printf("c2 type=%d, color=%d\n",c2.type,c2.color);
構造体変数の使用
return 0;
}
3
構造体の定義と変数
struct RacingCar {
int type;
int color;
};
RacingCar c1;
RacingCar c2;
type
color
定義は設計図のようなもの
c1
c2
実際の変数は設計図から作った車のようなもの
4
なぜ構造体が必要か
• プログラムが大きくなると、変数
がたくさんになる。
• 変数がたくさんになると、わけ
が分らなくなる。
• そこで、構造体で関連する変数
をひとまとめにして、整理する。
struct
int
ivalue1;
values {
int
intivalue2;
ivalue1;
double
int ivalue2;
counter=0;
int p,q,r,s;
};
int color;
struct
RacingCar {
int
double
type; counter=0;
int
intneko,
p,q,r,s;
inu, kirin;
int
intcgengo_ha_sukidesuka;
color;
int
inta,b,c;
type;
int cnt = 0;
};
struct c2 {
int neko, inu, kirin;
int cgengo_ha_sukidesuka;
int a,b,c;
};
int cnt = 0;
5
構造体と配列
struct RacingCar {
int type;
int color;
};
RacingCar cars[3];
cars[0].type = 1;
cars[1].color = 2;
構造体配列変数の作成
構造体配列変数への代入
6
構造体とポインタ
struct RacingCar {
int type;
int color;
};
RacingCar car; 構造体変数の作成
RacingCar* p_car = &car; 構造体ポインタの作成、
car変数のアドレスをセット
p_car->color = 1;
ポインタによる変数への代入
car.color = 1;と同じ。
7
構造体変数の引数
struct RacingCar {
関数とmainの両方で構造体を使
int type;
いたい場合、両方を含む位置(関
int color;
数とmainの外側)で定義する。
};
構造体変数(コピー)
int function1(RacingCar c){...}
int function2(RacingCar c[3]){...} 構造体配列変数(ポインタ)
int function3(RacingCar* p_c){...} 構造体変数ポインタ
int main(){...}
8
構造体の中に構造体
struct Engine {
int manufacture;
int date;
};
struct RacingCar {
Engine engine;
int type;
int color;
}
エンジンを表す構造体
レーシングカー構造体に
エンジン構造体の変数を入れる
9