関数
関数の作成方法:
戻り値有りの場合
型名 関数名(型名 引数1,型名 引数2,・・・){
処理
return オブジェクト
}
戻り値無しの場合
void 関数名(型名 引数1,型名 引数2,・・・){
処理
}
関数の呼び出し方法:
戻り値有りの場合
戻り値の型名 オブジェクト名 = 関数名(変数1,変数2,・・・)
戻り値無しの場合
関数名(変数1,変数2,・・・)
code:c
#include <stdio.h>
const float pi = 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の円の面積は%.2f、円周の長さは%.2f\n", r, f1, f2);
}
// 関数の呼び出し、実行
int main(void) {
float r = 10.0f, ans = 0, len = 0;
ans = calc_a(r);
len = calc_l(r);
prt(r, ans, len);
return 0;
}
https://gyazo.com/e9504eeb9a7a73f4450dfd4fe24b0a16
結果確認:https://paiza.io/projects/UuWsWebeaI8FWE2LMarT3g
使用ブラウザ:
https://paiza.io/ja/projects/new
https://replit.com/languages/c
参考:https://www.sejuku.net/blog/24348
プロトタイプ宣言を使った関数の宣言
関数の戻り値の型や関数名、引数を使ってあらかじめソースコードの序盤に宣言だけしておくこと。
C言語では記述した順に上から処理が行われるため、定義していない変数や関数を使うとコンパイルできません。
プロトタイプ宣言を行うことにより、関数を後ろに書いても良くなる。
code:c
#include <stdio.h>
// グローバル変数(定数)の宣言と定義
const float pi = 3.14;
// 関数のプロトタイプ宣言(関数の宣言のみ。関数の定義は後述。)
float calc_a(float r); // 戻り値:float型。引数:float型。
float calc_l(float r); // 戻り値:float型。引数:float型。
void prt(float r, float f1, float f2); // 戻り値:なし。引数1:float型。引数3:float型。引数3:float型。
// 関数の呼び出し、実行
int main(void) {
float r = 10.0f, ans = 0, len = 0;
ans = calc_a(r);
len = calc_l(r);
prt(r, ans, len);
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://gyazo.com/889ca1e69e147dd74bea5f5ee7b69a56
実行結果:https://paiza.io/projects/ONLjLEz57mueWHxtOThlPQ
参考:https://www.sejuku.net/blog/24348
参照渡し:
プログラム中で関数やサブルーチンなどに引数を渡す時に、変数への参照(メモリ中のアドレスなど)を渡す方式。
「参照呼び出し」とも呼ばれる。
関数などの中で値を変更すると元の変数も同じように変更される。
これに対し、変数の値のみを渡し、渡された関数などの中で値を変更しても呼び出し元の変数の内容が変わらない方式を「値渡し」(call by value)という。
参考:https://chomado.com/programming/call-by-value-or-by-reference/