プログラミング指導 第八章 構造体 - マルチメディア研究同好会

11

Click here to load reader

Upload: multimedia-research-club-tmcit

Post on 19-Jul-2015

59 views

Category:

Software


0 download

TRANSCRIPT

Page 1: プログラミング指導 第八章 構造体 - マルチメディア研究同好会

構造体~頑張って読んでね~

Page 2: プログラミング指導 第八章 構造体 - マルチメディア研究同好会

構造体って何だ?

構造体とは、複数のデータをまとめたものです

名前

HP

MP

攻撃力

イメージとしてはこんな感じです

構造体の中のデータをメンバと言います。

キャラクター

Page 3: プログラミング指導 第八章 構造体 - マルチメディア研究同好会

宣言

構造体は自分で作る型のようなもので、まず型枠を宣言する必要があります。

構造体タグ名というのが型枠の名前です

・構造体の型枠の宣言

struct 構造体タグ名 {

型 メンバ変数1;

型 メンバ変数2;

型 メンバ変数3;

型 メンバ変数4;

};

最後のセミコロンの付け忘れに注意してください

名前

HP

MP

攻撃力

キャラクター

Page 4: プログラミング指導 第八章 構造体 - マルチメディア研究同好会

型枠を宣言できたら、それを型とする変数を宣言することで構造体の実体を作ることができます。実体を作れば中のメンバをいじることができます。

・構造体の実体(構造体変数)の宣言

struct 構造体タグ名(宣言したもの) 構造体変数名;

型枠と実体を同時に宣言することもできます

struct 構造体タグ名{

メンバ変数;

} 構造体変数名;

名前

HP

MP

攻撃力

キャラクター

名前 = クリボー

HP = 50

MP = 0

攻撃力 = 20

エネミー

Page 5: プログラミング指導 第八章 構造体 - マルチメディア研究同好会

例)

struct Character{char name[20];int HP;int MP;double attack;

} Enemy;

//またはstruct Character Player;

・構造体も配列のように、宣言時に初期値を設定することができますstruct Character Player = { “CGT”, 5, 0, 1 }; //nameにCGT

HPに5MPに0attackに1が代入される

Page 6: プログラミング指導 第八章 構造体 - マルチメディア研究同好会

メンバ参照

構造体は .(ドット)演算子 を使って

構造体変数名.メンバ名

とすることで構造体の中のメンバを参照することができます。

例)Enemy.HP -= 10; //エネミーのメンバ変数 HP を-10する

int a = Enemy.MP; //エネミーのメンバ変数MPを変数aに代入

Page 7: プログラミング指導 第八章 構造体 - マルチメディア研究同好会

構造体の代入同じ型の構造体変数どうしなら、普通の変数のように代入することができる。

例)struct Character Enemy1 = { “aho”, 10, 10, 10 };struct Character Enemy2;

Enemy2 = Enemy1; //Enemy1のメンバがEnemy2に代入される

Page 8: プログラミング指導 第八章 構造体 - マルチメディア研究同好会

typedefで少し楽をするtypedefというものを用いると、既に定義されている型に、別の新しい名前を付けて定義することができる。

・使い方

typedef 定義されている型 定義する新しい型名;

例)typedef float shosu;これは、shosuという名前の型はfloat型であると定義しています。これをするとshosuをfloatの代わりに使うことができます。

Page 9: プログラミング指導 第八章 構造体 - マルチメディア研究同好会

・今までは宣言した構造体の型枠を使って構造体変数を宣言する時には、

struct 構造体タグ名 構造体変数名;

としていましたが、構造体の型枠を宣言する時にtypedefを使って構造体の型枠の名前を定義すれば、いちいちstructと書かなくてもよくなります。

typedef struct Character_t{char name[ 20 ];int HP;int MP;double attack;

} Character; //struct Character_tをCharacterと定義する

Character Enemy; //struct Character_t Enemyと同じ

構造体タグ名は省略することもできるtypedef struct {

char name[ 20 ];int HP;int MP;double attack;

} Character;

Character Enemy;

Page 10: プログラミング指導 第八章 構造体 - マルチメディア研究同好会

やってみょう

#include <stdio.h>

int main(){

struct Character{char name[ 20 ];

int HP;

int MP;

} Player;

Player.HP = 10;

printf( “プレイヤーのHPは%dです¥n”, Player.HP );

return 0;

}

Page 11: プログラミング指導 第八章 構造体 - マルチメディア研究同好会

課題、第8章の課題。やるよな☺