C言語を学び始めて2週間ほどで、C言語の自作関数を理解すべく、しつこいばかりに説明を添えたコードです。
自作関数の引数と戻り値の流れが大まかにわかるかと思います。
自作関数に壁を感じる人も多いと思うので参考になれば幸いです。
じゃんけんなのでゲーム感覚でやってみてください。
jisaku_kansu.c
#include<stdio.h>//入出力
#include<stdlib.h>//一般
#include<time.h>//時間(ランダム初期化用)
//関数は基本main関数の上に書く
int randam(void)
//関数rand(void)
//main関数から呼び出されたら初めて実行される
//※voidは引数なしの関数です
//そのためmain関数での呼び出しに引数を使うことができません
{
srand((unsigned int)time(NULL));
//乱数初期化
int rnum;//関数内での変数宣言
//乱数0-2を変数に代入
rnum = rand()%3;
//main関数にrnumの数値を返す。戻り値という
printf("②randam関数を呼び出しました\n③randam関数の引数はvoidのためありません。\n④rnumの中身:%dを戻り値としてmain関数のxに返します\n",rnum);
return rnum;
}
int judge(int xx)
//main関数から呼び出されたら初めて実行される。
//引数xをint xxに代入して実行される。
//(int xx)関数内であつかう仮の関数定義。
//特に定めがなくmain関数との兼ね合いもない。
//同じ名前も使えるが、わかりづらくなるので変えたほうが無難
{
if(xx==0)
printf("⑥judgeに引数(ひきすう)として代入したxがxxに代入されました。\nxxの中身:%d\n結果は:グー",xx);
else if(xx==1)
printf("⑥judgeに引数(ひきすう)として代入した数字xがxxに代入されました。\nxxの中身:%d\n結果は:チョキ",xx);
else
printf("⑥judgeに引数(ひきすう)として代入した数字xがxxに代入されました。\nxxの中身:%d\n結果は:パー",xx);
}
int main(void)
//main関数に引数を設定することはできないため常にvoidとなっています。
{
int x;
printf("①mainが実行されます\n");
x = randam();//randam関数呼び出し。void引数なし。戻り値をxに代入
printf("⑤randamからの戻り値は%dです。judgeに代入します\n",x);
judge(x);//judge関数を呼び出し。引数x(randamの数値が入っていいるもの)
getchar();
getchar();
return 0;
}