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

ProgramingTips

関数1

最終更新:

Bot(ページ名リンク)

- view
だれでも歓迎! 編集

C言語>関数1


関数とは

数学の関数を思い出して頂くと、ちょっとわかりやすいのですかね…
y=f(x)という関数があったら、引数(ひきすう)のxによって、yの値が変わるというものです。
プログラムでも、まあ似たようなものだと考えていてください。

使用方法1

型名 関数名(引数);

int main(void)
{
	……
}

型名 関数名(引数)
{
	……
}
まず、関数名のプロトタイプ宣言というものを行ってから、
実際に関数の内容を書いていく方法です。
プロトタイプ宣言とは、この関数を使いますよ…
とあらかじめ宣言しておくものです。
こちらの方法がメジャーな方法です。

使用方法2

型名 関数名(引数)
{

}

int main(void)
{
	…
}
メイン関数の前に処理内容を書くこともできます。
こちらはいろいろ不便なことがあるので、なるべく
この書き方は避けましょう。

例文

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

//===============================================
//関数のプロトタイプ宣言
//===============================================
void Initialize(void);//変数の初期化
void DispStatus(char *name, int hp, int attack, int defence);//ステータス表示 

//===============================================
//struct
//===============================================
struct CharaData
{
	char *m_name;//名前
	int m_Hp;//HP
	int m_attack;//攻撃力
	int m_defence;//防御力
};

struct CharaData player;

//===============================================
//main関数
//===============================================
int main(void)
{
	/*変数の初期化*/
	Initialize();
	
	/*ステータスの表示*/
	DispStatus(player.m_name, player.m_Hp, player.m_attack, player.m_defence);
	
	return 0;
}

//===============================================
//変数の初期化
//===============================================
//[input]
//	なし
//[return]
//	なし
//===============================================
void Initialize(void)
{
	player.m_name = "勇者";
	player.m_Hp = 10;
	player.m_attack = 6;
	player.m_defence = 5;
}

//===============================================
//ステータス表示
//===============================================
//[input]
//	name:名前
//	hp:体力
//	attack:攻撃力
//	defence:防御力
//[return]
//	なし
//===============================================
void DispStatus(char *name, int hp, int attack, int defence)
{
	[[printf]]("%sのステータス\n", name);
	printf("HP:%d\n", hp);
	printf("attack:%d\n", attack);
	printf("defence:%d\n", defence);
}

実行結果


解説

void Initialize(void)
変数の初期化用関数です。
voidは何もないということを意味し、型名につけると
戻り値(return)を省略でき、引数内に書くと、引数を
省略できます。

void DispStatus(char *name, int hp, int attack, int defence)
ステータスを表示する関数です。
引数に対応するものを表示しています。
DispStatus(player.m_name, player.m_Hp, player.m_attack, player.m_defence);
この場合、player.m_nameがnameに対応して、player.m_attackがattackに対応して…
というようになっています。

関数化をすることで、メイン関数がずいぶんすっきりしますね。
このように関数化することでだんだんとソースコードを見やすくしていきます。
これが関数化のメリットの一つです。

<C言語に戻る

タグ:

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