C言語>関数1
関数とは
数学の関数を思い出して頂くと、ちょっとわかりやすいのですかね…
y=f(x)という関数があったら、引数(ひきすう)のxによって、yの値が変わるというものです。
プログラムでも、まあ似たようなものだと考えていてください。
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は何もないということを意味し、型名につけると
戻り値(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言語に戻る
添付ファイル