0からのゲームプログラミング > 構造体

Back Next
更新日 2003.09.27
構造体

 まずは以下の例を見て下さい。

サンプルコード

#include	<stdio.h>

long	g_lHeroLife;	// 勇者のライフ
long	g_lHeroStrength;	// 勇者の力

long	g_lSatanLife;	// 魔王のライフ
long	g_lSatanStrength;	// 魔王の力

// 関数のプロトタイプ宣言
void HeroStatus(void);
void SatanStatus(void);

void main(void)
{
	g_lHeroLife = 35;
	g_lHeroStrength = 15;

	g_lSatanLife = 305;
	g_lSatanStrength = 105;

	HeroStatus();
	SatanStatus();
}

// 勇者のステータスを表示
void HeroStatus(void)
{
	printf("勇者のライフ:%d\n", g_lHeroLife);
	printf("勇者の力  :%d\n\n", g_lHeroStrength);
}

// 魔王のステータスを表示
void SatanStatus(void)
{
	printf("魔王のライフ:%d\n", g_lSatanLife);
	printf("魔王の力  :%d\n\n", g_lSatanStrength);
}

実行結果
勇者のライフ:35
勇者の力  :15

魔王のライフ:305
魔王の力  :105


 若干長くなってしまいましたが、勇者と魔王それぞれに、ライフと力を設定して、それを表示させているだけです。ただ、勇者と魔王それぞれに、ライフと力がありますが、ライフと力を一まとめのデータ型と考えて処理する方法がCには用意されています。構造体 (struct)を使って書き換えたのが下の例です。


サンプルコード Main.cpp

#include	<stdio.h>
#include	"Main.h"

// 構造体宣言
tagCharacter	g_Hero;	// 勇者
tagCharacter	g_Satan;	// 魔王

// 関数のプロトタイプ宣言
void HeroStatus(void);
void SatanStatus(void);

void main(void)
{
	g_Hero.lLife = 35;
	g_Hero.lStrength = 15;

	g_Satan.lLife = 305;
	g_Satan.lStrength = 105;

	HeroStatus();
	SatanStatus();
}

// 勇者のステータスを表示
void HeroStatus(void)
{
	printf("勇者のライフ:%d\n", g_Hero.lLife);
	printf("勇者の力  :%d\n\n", g_Hero.lStrength);
}

// 魔王のステータスを表示
void SatanStatus(void)
{
	printf("魔王のライフ:%d\n", g_Satan.lLife);
	printf("魔王の力  :%d\n\n", g_Satan.lStrength);
}

サンプルコード Main.h

// 構造体定義
struct tagCharacter{
	long	lLife;		// ライフ
	long	lStrength;	// 力
};

 実行結果は上と同じです。構造体定義のところで、tagCharacter という新しい型を定義しています。最後のセミコロン(;)を忘れないようにして下さい。構造体定義は、他のソースファイル(*.cpp)からも、その型を使用出来るように、普通はヘッダファイル(*.h)に記述します。

// 構造体定義
struct タグ名 {
    データ型  メンバ名1;
    データ型  メンバ名2;
      ・
      ・
};


 変数を宣言するときには、char 型や int 型と同じように、tagCharacter 型として、変数を宣言することが出来ます。もし、ファイル名が Main.cpp ではなくて、Main.c にしているなら、構造体宣言のところは、tagCharacter の代わりに、struct tagCharacter としなければコンパイルが通りません。

 構造体変数のメンバを参照するには、ドット演算子 ( . ) を使います。Visual C++ を使っているなら、. (ドット)を打った時点で、その構造体のメンバの候補が表示されます。途中まで入力してから、「Tab」キーを押すことで後の文字を自動的に入力出来て便利です。
 

【スポンサード リンク】


Back Next

0からのゲームプログラミング > 構造体