C言語 | 関数 | パラメータと戻り値
関数は処理に使う値を受け取り、処理結果を呼び出し元へ返すことができます。
関数に値を渡す
関数へ渡す情報を引数と呼びます。関数側で引数を受け取るために宣言する変数はパラメータです。関数定義の括弧内に型と識別子を書き、複数ある場合はカンマで区切ります。
void Function(int iValue, float fValue) { ...
呼び出すときは、パラメータの型と互換性がある式を指定します。
コード1
#include <stdio.h>
void Function(int iValue, float fValue) {
printf("iValue = %d : fValue = %g\n", iValue, fValue);
}
int main() {
Function(10, 3.14F);
Function(100, 1000);
return 0;
}
Function(100, 1000) では、float 型のパラメータに int 型の引数を渡しています。代入と同様に、互換性があれば暗黙の型変換が行われます。iValue や fValue のようなパラメータは、宣言された関数内でのみ使用できます。
関数の結果を返す
関数は呼び出し元へ値を返せます。呼び出し元はその値を変数に保存することも、無視することもできます。
コード2
#include <stdio.h>
int Triangle(int iBase, int iHeight) {
return iBase * iHeight / 2;
}
int main() {
int iBase, iHeight, iArea;
printf("三角形の底辺と高さを入力してください。 >");
scanf("%d %d", &iBase, &iHeight);
iArea = Triangle(iBase, iHeight);
printf("三角形の面積 = %d\n", iArea);
return 0;
}
Triangle() は底辺と高さを受け取り、面積を返します。異なる関数では同じ識別子の変数を宣言できます。それぞれ別のスコープに属するためです。
古いC言語では戻り値の型を省略すると int として扱われました。この旧式の構文は現在のC規格では使用できず、C++でもエラーになります。新しいコードでは戻り値の型を必ず明示してください。
コード3
#include <stdio.h>
int Function(void) {
printf("Function()\n");
return 0;
}
int main(void) {
return Function();
}
型を明示すると、関数の目的が明確になり、廃止された構文への依存を避けられます。