皆さんこんばんにちは、ユウです。
今回はC言語の関数について紹介していきたいと思います。
他の記事では、式の計算や条件分岐、反復処理等について紹介しているので興味がある方は以下にリンクを張っておくので、そちらから足を運んでみてださい。
関数はマスターすると、main関数内がすっきりとし、読みやすいコードを書けるようになります。
今回もコードは基本コピペで構いません。
解説を見る前にコード内で何が起こっているのか、予想してから見るようにして下さい!
それでは、はじめて行きたいと思います。
基本的な関数
この記事を読んでいる皆さんなら、printfやscanfという関数を知っているかと思います。
これらのように、C言語には多くの関数が用意されています。
C言語にあらかじめ用意されている言語の事を標準関数といいます。
一方で、関数はプログラマが必要に応じて独自で作ることが出来ます。
この独自に作る関数をユーザ関数といいます。
それではコードを書いていきましょう。
実行結果
<解説>
4行目・・・関数のプロトタイプ宣言
main関数の前に、関数のプロトタイプ宣言をしなければなりません。
この宣言ではmenseki関数を使うということをmain関数の前にしています。
プロトタイプ宣言は、コンパイルした時にmain関数内でmenseki()があるという予告をしています。
ですので、以下のコードのように、main関数の前にmenseki関数の本体自体を持ってくると、この宣言は不要になります。
12行目・・・関数の呼び出し
ここでユーザ関数のmenseki関数に移ります。
移る際に、main関数のx,y2変数を渡しています。
17行目・・・ユーザ関数の実行
ここで、計算し出力を行います。
このコードではあまり、実感できませんがユーザ関数の中身がもっと多くなると、関数を作る効果が見えてきます。
ユーザ関数は、上で説明した12行目の関数呼び出しの部分の処理を行っています。
もし、ユーザ関数を作らずに記述した場合、main関数の中身がかなりかさばります。
本来、main関数はできるだけ簡潔に作らなければなりません。
引数と戻り値について
引数(ひきすう)と戻り値は実は皆さんが普通に使用しているmain 関数にも使われています。
皆さんはmain 関数を書く際に、int main(void){ ~ return 0;}と書いていくかと思います。
この、voidと0の部分が引数と戻り値となります。
詳しくは解説で説明しますので、いったんコードを書いて考えてみましょう。
実行結果
<解説>
10行目・・・ユーザ関数の作り方
このコードは与えられた数字のどちらが大きいかを判断するものになっています。
ここで、疑問に思ってほしいのがbiggerの前についているvoidとは一体何なのか、biggerの()の中に入っている文字はなぜintとなっているのかということです。
以下のコードを見て下さい。
ユーザ関数はこのような構造で書いていきます。
このコードの①~④を見て下さい。
①戻り値のデータ型
これは計算等をした際にその計算結果をmain関数内で使用したい場合に重要となってきます。
このデータ型はユーザ関数で作る予定の値のデータ型を入力します。
もし、main関数で値を使わない場合はvoidと書いておけば大丈夫です。
②関数名を作成
関数の名前は変数のように付けることが出来るので、おおよその意味が伝われば禁止名以外だと何を書いても大丈夫です。
③引数の宣言
ユーザ関数は上のコードの6行目のように呼び出されます。
その際にデータをユーザ関数側に引き渡し、そのデータを使ってユーザ関数で処理したい場合にそのデータの型と変数を用意しておく必要があります。
この変数のことを引数といいます。
④return文
関数内で処理が終了し、呼び出し側の関数へ処理結果を戻す値を戻り値といいます。
この戻り値はreturn 文の()の中に記述します。戻り値は数値そのものを指定する場合もありますが、通常は変数を戻り値として設定します。
戻り値が無い場合はこの文は必要ありません。
これらの事をきちんと理解できておけば、関数は簡単に扱えるようになります。
最後に
今回は関数について紹介してきました。
関数を使い分けるとmain関数が読みやすくなり、他の人が見てもわかりやすいコードを掛けるようになります。
メンテナンスのしやすさ等からも普段から、関数を使ってコードを書いていくようにオススメします。
ぜひ、関数を自分で作って処理を行ってみて下さい!
関数を掛けるようになると以下のリンク先のように複雑な計算もまとまった形で計算できるようになります。
関数の良い使い方の例なので見てみてはどうでしょうか。
今回はこれで以上となります。
最後まで読んでいただきありがとうございました!
この記事の続きは下のリンクから行けます。
C言語全体でまとめている記事もあるので、そちらにも足を運んでいただけると嬉しいです。