SlideShare a Scribd company logo
1 of 11
Download to read offline
構造体
~頑張って読んでね~
構造体って何だ?
構造体とは、複数のデータをまとめたものです
名前
HP
MP
攻撃力
イメージとしてはこんな感じです
構造体の中のデータをメンバと言います。
キャラクター
宣言
構造体は自分で作る型のようなもので、まず型枠を宣言する必要があります。
構造体タグ名というのが型枠の名前です
・構造体の型枠の宣言
struct 構造体タグ名 {
型 メンバ変数1;
型 メンバ変数2;
型 メンバ変数3;
型 メンバ変数4;
};
最後のセミコロンの付け忘れに注意してください
名前
HP
MP
攻撃力
キャラクター
型枠を宣言できたら、それを型とする変数を宣言することで構造体の実体を作る
ことができます。実体を作れば中のメンバをいじることができます。
・構造体の実体(構造体変数)の宣言
struct 構造体タグ名(宣言したもの) 構造体変数名;
型枠と実体を同時に宣言することもできます
struct 構造体タグ名{
メンバ変数;
・
・
} 構造体変数名;
名前
HP
MP
攻撃力
キャラクター
名前 = クリボー
HP = 50
MP = 0
攻撃力 = 20
エネミー
例)
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に5
MPに0
attackに1が代入される
メンバ参照
構造体は .(ドット)演算子 を使って
構造体変数名.メンバ名
とすることで構造体の中のメンバを参照することができます。
例)
Enemy.HP -= 10; //エネミーのメンバ変数 HP を-10する
int a = Enemy.MP; //エネミーのメンバ変数MPを変数aに代入
構造体の代入
同じ型の構造体変数どうしなら、普通の変数のように代入することができる。
例)
struct Character Enemy1 = { “aho”, 10, 10, 10 };
struct Character Enemy2;
Enemy2 = Enemy1; //Enemy1のメンバがEnemy2に代入される
typedefで少し楽をする
typedefというものを用いると、既に定義されている型に、別の新しい名前を付け
て定義することができる。
・使い方
typedef 定義されている型 定義する新しい型名;
例)
typedef float shosu;
これは、shosuという名前の型はfloat型であると定義しています。
これをするとshosuをfloatの代わりに使うことができます。
・今までは宣言した構造体の型枠を使って構造体変数を宣言する時には、
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;
やってみょう
#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;
}
課題、第8章の課題。やるよな☺

More Related Content

Viewers also liked (11)

8 software libre, open source e historia de linux
8 software libre, open source e historia de linux8 software libre, open source e historia de linux
8 software libre, open source e historia de linux
 
8. Startup Marketing By Enkhbat
8. Startup Marketing By Enkhbat8. Startup Marketing By Enkhbat
8. Startup Marketing By Enkhbat
 
8jdk
8jdk8jdk
8jdk
 
8 gl1
8 gl18 gl1
8 gl1
 
8th pre alg -l70
8th pre alg -l708th pre alg -l70
8th pre alg -l70
 
Evitar El Mal Aliento.
Evitar El Mal Aliento. Evitar El Mal Aliento.
Evitar El Mal Aliento.
 
general survey, mental status exam
general survey, mental status exam general survey, mental status exam
general survey, mental status exam
 
8 jpg
8 jpg8 jpg
8 jpg
 
8th alg -oct21-23
8th alg -oct21-238th alg -oct21-23
8th alg -oct21-23
 
8over8 Complete Contract Control
8over8 Complete Contract Control8over8 Complete Contract Control
8over8 Complete Contract Control
 
Hristo Hristov @ SeeMe7
Hristo Hristov @ SeeMe7Hristo Hristov @ SeeMe7
Hristo Hristov @ SeeMe7
 

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