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

ProgramingTips

ポインタ3

最終更新:

Bot(ページ名リンク)

- view
だれでも歓迎! 編集

C言語>ポインタ3


3回目は、構造体を使ってポインタを説明します。

例文

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

//================================================
//define
//================================================
#define P_AT 4 //自分の攻撃力
#define P_DEF 2//自分の防御力
#define E_AT 2//敵の攻撃力
#define E_DEF 1//敵の防御力

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

//================================================
//関数のプロトタイプ宣言
//================================================
void SetStatus(struct tagChara *chara, char *name, int attack, int defence);//ステータスのセット
void DispStatus(struct tagChara *chara);//ステータスの表示

//================================================
//メイン関数
//================================================
int main(void)
{
	/*構造体変数の宣言*/
	struct tagChara player;
	struct tagChara enemy;
	
	/*ステータスセット*/
	SetStatus(&player, "勇者", P_AT, P_DEF);
	SetStatus(&enemy, "モンスター", E_AT, E_DEF);
	
	/*ステータスの表示*/
	DispStatus(&player);
	DispStatus(&enemy);
	
	return 0;
}

//================================================
//ステータスセット
//================================================
void SetStatus(struct tagChara *chara, char *name, int attack, int defence)
{
	chara->name = name;
	chara->attack = attack;
	chara->defence = defence;
}

//===============================================
//ステータスの表示
//===============================================
void DispStatus(struct tagChara *chara)
{
	[[printf]]("%s:\t", chara->name);
	printf("attack:%d\t", chara->attack);
	printf("defence:%d\n", chara->defence);
}

実行結果



解説

void SetStatus(struct tagChara *chara, char *name, int attack, int defence);//ステータスのセット
構造体をポインタにして、関数のプロトタイプ宣言をしています。

SetStatus(&player, "勇者", P_AT, P_DEF);
ステータスの設定をしています。
SetStatusの最初の引数は、構造体のポインタのため、
&をつけています。

では実際に、関数の中身を見て行きましょう。
chara->name = name;
chara->attack = attack;
chara->defence = defence;
構造体ポインタの変数に、引数として指定したもの
を代入しています。
構造体ポインタを代入するときは、上記の通り
  • >をつけるか、
(*chara).nameという風にします。
DispStatusも同じような感じです。

とりあえず、ポインタの回は以上です。
大変複雑で難しいですが、一度使い方さえ
抑えてしまえば、何とかなると思います。

<C言語に戻る

タグ:

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