関数
・目次
1.関数とは
(1) 処理のひとまとまりのこと
(2) 同じ処理を複数行う時に作成する時に、使用する。
2.関数の作成と呼び出しの方法
(1) 関数の作成方法
型名 関数名(型名 引数1,型名 引数2,・・・){ 処理 return オブジェクト }
void 関数名(型名 引数1,型名 引数2,・・・){ 処理 }
(2)関数の呼び出し方法
戻り値の型名 オブジェクト名 = 関数名(変数1,変数2,・・・); 又は 関数名(変数1,変数2,・・・);
関数名(変数1,変数2,・・・);
(3) プログラムの作成(円周と面積を算出する関数の作成)
#include <stdio.h> const float pi = 3.14; //定数:円周率3.14を宣言 // 関数の宣言と定義 float calc_a(float r) { //面積を算出する関数 float area = pi * r * r; //面積の計算 return area; //算出した面積の値を返す。 } float calc_l(float r) { //円周の長さを算出する関数 float len = pi * 2 * r; //円周の計算 return len; //算出した円周の値を返す。 } void prt(float r, float f1, float f2) { //円の面積と、円周の長さを表示する関数 printf("半径:%.1f\n面積:%.2f\n円周の長さ:%.2f\n", r, f1, f2); //円周と面積を表示 } // 関数の呼び出し、実行 int main(void) { //変数の宣言 float r = 10.0; //半径 float ans = 0; //面性格納用変数 float len = 0; //円周の長さ格納用変数 ans = calc_a(r); //ansにcalc_aで算出した値を代入 len = calc_l(r); //lenにcalc_lで算出した値を代入 prt(r, ans, len); //prt関数に、算出した値を渡し、表示する。 return 0; }
実行結果:https://paiza.io/projects/UuWsWebeaI8FWE2LMarT3g
注:上記状態の場合、main()の上に、関数を記載しなければならない。
3.プロトタイプ宣言
プロトタイプ宣言:
(1) 関数の戻り値の型や関数名、引数を使い、ソースコードの序盤に宣言だけしておくこと。
(2) これにより、main関数のしたに関数を書ける。
(3) ソースファイル、ヘッダファイルを分割する際などに必須
(1) 関数のプロトタイプ宣言のやり方
型名 関数名(型名 引数1,型名 引数2,・・・);
(2)プログラムの作成(円の円周と面積を算出するプログラム2)
//ファイルのインクルード #include <stdio.h> // グローバル変数(定数)の宣言と定義 const float pi = 3.14; // 関数のプロトタイプ宣言(関数の宣言のみ。関数の定義は後述。) float calc_a(float r); // 戻り値:float型。引数:float型。 float calc_l(float r); // 戻り値:float型。引数:float型。 // 戻り値:なし。引数1:float型。引数3:float型。引数3:float型。 void prt(float r, float f1, float f2); // 関数の呼び出し、実行 (処理は上と同じのため、コメントは省略) int main(void) { //変数の宣言 float r = 10.0; //半径 float ans = 0; //面性格納用変数 float len = 0; //円周の長さ格納用変数 ans = calc_a(r); //ansにcalc_aで算出した値を代入 len = calc_l(r); //lenにcalc_lで算出した値を代入 prt(r, ans, len); //prt関数に、算出した値を渡し、表示する。 return 0; } // プロトタイプ宣言した関数の定義 float calc_a(float r) { float area = pi * r * r; return area; } float calc_l(float r) { float len = pi * 2 * r; return len; } void prt(float r, float f1, float f2) { printf("半径%.1fの円の面積は%.2f、円周の長さは%.2f\n", r, f1, f2); }
実行結果:https://paiza.io/projects/ONLjLEz57mueWHxtOThlPQ
(詳細は、ポインタで説明。)
値渡し:
4.関連記事
・Project OKI過去のブログ一覧とか - Project_OKI’s diary
・組み込みの為のC言語基礎知識1(printf) - Project_OKI’s diary
・C言語基礎知識2(for分で処理を繰り返す) - Project_OKI’s diary
・C言語基礎知識3(配列) - Project_OKI’s diary
・C言語基礎知識4(if文) - Project_OKI’s diary
・C言語基礎知識5(switch文) - Project_OKI’s diary
・知らないと損するお金の話(ふるさと納税、確定申告とワンストップ納税どっちが得?) - Project_OKI’s diary
・組み込みC言語基礎知識6(関数) - Project_OKI’s diary
・組み込みC言語基礎知識7(構造体1) - Project_OKI’s diary