この章では関数について説明します。
関数とは入力したデータ(引数)に基づいて、決められた処理を行い、戻り値という結果を返す機能を持っています。
関数の仕組みはエクセルの関数の仕組みと意味は同じです。 この章以前の関数は「組み込み関数」と言いまして、C言語によって始めから用意されている関数です。
例えばprintf関数は文字列を出力する関数ですが、C言語でそのような働きを作ってくれています。
組み込み関数の他にC言語では自分で好き勝手にを作ることができます。
これを「ユーザー定義関数」と言いますが、この関数の作成方法をこの章で説明していきます。
例えば消費税額を自動で計算する関数を自分で作りたいとします。その場合、商品のお金を関数に渡すと関数は商品金額に消費税額を掛けた処理をして、その金額を返すという関数を作ることになります。
関数の構文は以下の通りですが、これを「関数の定義」と呼びます。 〇引数とは関数が利用するデータのことを言います。
〇関数の中の引数は左端から第1引数,第2引数と順番に数えていきます。
また1個以上の引数を記述する場合はカンマで区切ってください。引数がない場合にはを入れます。
〇returnを記述するときはという形で書きます。
またreturnは省略できます。returnの詳細は後ほど説明します。
main関数も関数の一種ですが、他にも色々な関数を作ることができます。
main関数は特別で他にどんな関数を作っても一番初めに実行される関数です。
次に関数の実行方法について説明します。
関数はmain関数を除いて関数を定義しただけでは何も動きません。
関数を実行させるためには関数を呼び出す必要があります。
そして、呼び出すことによって関数の中身が実行されます。 では1番簡単な例から、見てみましょう。 初めに、プログラムの流れから見てみます。
① main関数とhello関数がありますが、初めに実行されるのはmain関数です。
main関数の中では上から順にプログラムは流れていきます。
ですので、初めにが実行されます。
②次にhello();を実行します。
関数名に「()」を付け、hello関数を呼び出しています。
hello関数内ではを実行して「こんにちは」を出力します。
③hello関数を実行し終えたのならばmain関数に戻ってきて、プログラムを終了します。
では関数の構文を詳しく説明します。
初めに「戻り値の型」について説明します。 関数とは入力したデータ(引数)に基づいて決められた処理を行い、戻り値という実行結果を返す機能を持っていますと説明しましたが、その戻り値の型を関数名の左側に書きます。
戻すための値がない場合にはと書きます。次に引数について説明します。 void hello(void)の2つ目のvoidは引数が無いと言う意味です。
つまり、関数の呼び出し元から渡されてくる引数が無いということです。
この例の場合はの箇所でhello関数を呼び出していますが、引数がカラです。
次は関数名について説明します。
関数名には「hello」と名前が付いていますが、名前の付け方にもルールがあります。
1つ目は1文字目は数字で始めることはできません。
つまり、3nという名前はつけることはできません。
1文字目は
「アンダースコア(_)」
「aからz」
「AからZ」のどれかで書きます。
2つ目は2文字目からは
「アンダースコア(_)」
「aからz」
「AからZ」
「数字」が使えます。
3つ目は31文字まで名前を付けることが出来ます
4つ目は予約語を使うことができません。
5つ目は基本的には小文字で書いてください。
次は関数についての注意点について説明します。
関数の定義は関数の呼び出しよりも前に定義しなければいけません。
つまり、先ほどの例で説明するとはmain関数の中にあるので、main関数よりhello関数を後ろに書いてはいけないということです。
以下の書き方はエラーです。
次は引数のある関数についての説明をします。 プログラムの流れをみてみましょう。
①初めに実行されるのはmain関数です。
「int a=2,b=3;」で変数の宣言と初期化を行っています。
次にを実行します。
②次に「tashizan(a,b);」の箇所でtashizan関数を呼び出します。
初めの例ではのようにカッコの中の引数はカラでしたが、この例ではtashizan関数に渡す値をa,bという引数で設定しています。
この呼び出し側のカッコの中の引数を実引数と言います。
③次にtashizan関数を実行します。
この関数の中の引数を仮引数と言います。
tashizan関数が呼び出されたのならばのaの部分がtashizan関数のの部分にセットされ、のbの部分がtashizan関数のの部分にそれぞれセットされます。
つまり、2がに入り、3がに入ります。
その後に関数内部のプログラムが実行されます。 tashizan関数を実行し終えたのならばmain関数に戻ってきて,でプログラムを終了します。
しかし、実引数と仮引数の型が違う場合には型変換の規則に従って自動的に変換されます。
型変換の規則については説明済みですが転載します。
次は戻り値のある例を見てみましょう。 tashizan関数の中で足し算の計算がされて、変数zにその結果を代入しています。 このようにreturnは関数の呼び出し元に戻り値を返す役割があります。
では、どのような時に戻り値を返すのか?
それは呼びだし側であるmain関数内でその値を活用したい場合に戻り値を返します。 この例の場合はreturnで返されるzはint型なのでtashizan関数の戻り値の型もintにしてください。