アットウィキロゴ
ProgramingTips
掲示板 掲示板 ページ検索 ページ検索 メニュー メニュー

ProgramingTips

構造体1

最終更新:

Bot(ページ名リンク)

- view
だれでも歓迎! 編集

C言語>構造体1


構造体は、一見難しそうに見えますが、実はそんなことはありません。
ゲームでは、各キャラの座標とかを保持しておくことができます。

使用方法1

宣言方法

struct タグ名
{
	メンバ変数1,
	メンバ変数2,
};

実体宣言

struct タグ名 構造体変数;

使用方法2

struct タグ名
{
 	メンバ変数1,
	メンバ変数2,
}構造体変数1, 構造体変数2, …;

初期化方法1

構造体変数.メンバ変数1 = 初期値;
構造体変数.メンバ変数2 = 初期値;
	…

初期化方法2

struct タグ名 構造体変数 = 
{
	メンバ変数1に対応する初期値,
	メンバ変数2に対応する初期値,
		…
};

メンバ変数とは

メンバ変数とは、構造体内で、宣言した変数の事をいいます。
ここで、注意したいのが、メンバ変数は変数宣言と同時に、
初期化ができないということです。
例えば、aという変数を宣言する例を見てみましょう。
普通は、
int a = 0;
のように宣言と同時に初期化できますが、メンバ変数では、
struct タグ名
{
	int a = 0;//エラー
};
のようにできないということです。
なので、初期化するには、外部で初期化する必要があります。

例文

//================================================
//include
//================================================
#include <stdio.h>

//================================================
//define
//================================================
#define PLAYER_ATTACK 5
#define PLAYER_DEFENCE 4
#define PLAYER_HP 4

//================================================
//struct
//================================================
struct CharaData
{
	int attack;//攻撃力
	int defence;//防御力
	
	int Hp;//体力
	
	char *name;//名前
};

//================================================
//メイン関数
//================================================
int main(void)
{
	struct CharaData player;
       
	//struct CharaData player = 
	//{
	//	PLAYER_ATTACK, 
	//	PLAYER_DEFENCE, 
	//	PLAYER_HP, 
	//	"勇者"
	//};
	//という風に初期化することも出来ます。
       
       
	/*初期化*/ 	
	player.attack = PLAYER_ATTACK;
	player.defence = PLAYER_DEFENCE;
	player.Hp = PLAYER_HP;
	player.name = "勇者";
       
	[[printf]]("%sのステータス", player.name);
	printf("Hp:%d", player.Hp);
	printf("attack:%d", player.attack);
	printf("defence:%d", player.defence);
	
	return 0;
}		

実行結果


解説

struct CharaData
{
	int attack;//攻撃力
	int defence;//防御力
	
	int Hp;//体力
	
	char *name;//名前
};
CharaDataという構造体の宣言をしています。

struct CharaData player;
playerという構造体変数を実体化しています。

player.attack = PLAYER_ATTACK;
構造体内の変数を使う場合は、最初に宣言した構造体変数を書き、
.(ドット)で区切って、メンバ変数にアクセスしています。
この場合、CharaData構造体内のattack変数を使いますよ、
という意味になります。

<C言語に戻る

タグ:

+ タグ編集
  • タグ:
添付ファイル
記事メニュー
最近更新されたスレッド
ウィキ募集バナー