Presentation is loading. Please wait.

Presentation is loading. Please wait.

C言語応用 構造体.

Similar presentations


Presentation on theme: "C言語応用 構造体."— Presentation transcript:

1 C言語応用 構造体

2 構造体 構造体とは 構造体とは、いくつかのデータを「ひとまとめ」にしたデータ構造である。
たとえば、学生の名前、身長、体重をひとつのデータとして扱いたい場合など。 構造体 身長 氏名 体重

3 構造体 定義 struct gstudent { char name[20]; int height; float weight; };
} a,b; 枠組みの宣言 struct xyz a,b; オブジェクトの定義

4 構造体 メンバの表し方 使用例 c.x = 5; b = 3 + c.x;
複数のオブジェクトの集まりを扱うという性質上、配列と構造体には、数多くの共通点がある。両者をまとめて集合体と呼ぶ。 c.x c.y c.z struct xyz { int x; long y; double z; } c; a[0] int a[3]; a[1] a[2] 変数名[添え字] 変数名.メンバ名 使用例 c.x = 5; b = 3 + c.x;

5 構造体 構造体と配列の類似点 構造体変数の初期化は、配列と同様に、{ }で初期化子を囲んだものを与えることによって行う。
int a[6] = {3,5,7,6,4,2}; 配列 構造体 struct xyz c = {15,100,10.5};

6 構造体 配列化する 構造体も配列化することができる。 c[0].x c[1].x c[1].y c[1].z c[0].y c[0].z
struct xyz { int x; long y; double z; } d[2];

7 構造体 構造体と配列の相違点 http://www.center.nitech.ac.jp/~sfukui/ouyou/list13-2.c
配列は「同じ型」のデータの集合を効率よく表すためのデータ構造である。一方、構造体は、一般には「異なる型」のものの集合を効率よく表すデータ構造である。 配列の変数は、たとえ要素数が同じであっても、代入を行うことはできない。しかし、同じ型の構造体は、代入を行うことができる。 配列 構造体 int a[6],b[6]; a = b; /* エラー */ struct xyz a,b; a = b; /* OK */

8 構造体 学生データの構造体とソート 学生の名前、身長、体重のデータをひとまとめにしたデータ構造を struct gstudent 型として宣言し、身長順にソートを行うプログラムを考える。

9 構造体 構造体とポインタ ポインタで構造体を指すこともできる。 or
p = &a; (*p).x = 20; (*p).y = 100; (*p).z = 3.14; struct xyz { int x; long y; double z; } a; or p = &a; p->x = 20; p->y = 100; p->z = 3.14; struct xyz *p;

10 構造体 補足 構造体の変数の宣言において struct xyz a; sturct をいちいちつけるのは面倒であるので、 typedef struct { int x; long y; float z; } xyz; と宣言すれば、 xyz a; として変数宣言ができる。

11 演習 x座標およびy座標のペアとして構成される構造体 point を定義せよ。(両座標は整数であるとする)。
x座標およびy座標のメンバに値を設定し、その構造体を返す関数 struct point pointof(int a,int b){ ・・・ } を作成せよ。 2つの座標 a,b間の距離を計算する関数 double distanceof(struct point a, struct point b){ ・・・ } を作成せよ。


Download ppt "C言語応用 構造体."

Similar presentations


Ads by Google