| 『楽しく!』『できる!!』C講座のページ |
第六回:関数ってなに?引数?戻り値??
さて突然ですが、関数という言葉を聞いたことがあるでしょうか?高校生以上の方は「三角関数」というものが数学で出てきたかもしれません。
簡単にいうとC言語での関数とは「何かの値を受け取って処理するもの」の事です。
変数とは「入れ物」だ。という風に説明しましたが、関数は「変数に入った値を材料にして、ものを作り出す機械」と考えれば良いでしょう。
通常、この機械(関数)は次のように書かれます。
f(x)
ここでのxは材料(変数)であり、fは機械(関数)の名前です。
例えば、材料(変数)に1を加える機械(関数)を考えましょう。名前は自由に決められるのでplusとしましょう。
またここで、せっかく1を加えたのですから、その処理の結果(x+1)をyという入れ物(変数)出力することにしましょう。
すると次のように書くことができます。
y=plus(x);
こうすれば、plusという機械(関数)はxという材料(変数)を取りこんで、1を加えた結果をyという入れ物(変数)に代入することになります。
ここで関数(機械)の材料として用いられる変数のことを『引数(ひきすう)』と呼び、関数が引数を用いる事を『引数を取る(もつ)』といいます。
つまりこの例ではxが引数となります。
また、関数が処理の結果を出力するとき、『関数が値を返す』といい、その値を『戻り値(返り値)』と呼びます。
整理しましょう。
|
|
int x,y; x=1; : |
|
型名 関数名(引数1, 引数2, …) { 動作内容 : return 変数名; |
|
return 変数名; |
|
int plus( int x ) { int r; r = x+1; return r; } |
|
#include <stdio.h> int add(int a, int b) // 関数addの宣言、引数はa,b、戻り値の型はint { int n; // 関数内でのみ使われる変数 n = a + b; // 関数の動作内容 return n; // 戻り値は return文 で返す } // ここまでが関数 add void main(void) // ここからがメインルーチン { int x=1, y=2; int ans; ans = add(x, y); // 関数add の呼び出し、戻り値をansに確保 printf("%d",ans); // 確保した ans を出力 } |
|
int add( int a, int b ) |
|
{ int n; // 関数内でのみ使われる変数 n = a + b; // 関数の動作内容 return n; // 戻り値は return文 で返す } // ここまでが関数 add |
|
ans = add(x, y); |
|
void main( void ) { char player, com; scanf("%c" &player); com=computer(); /* コンピュータの手を決定する関数の 返り値を変数comに代入 */ hantei(player,com); /* プレイヤーの手とコンピュータの手を引数に 勝敗を判定する */ } |
|
#include <stdio.h> int add(int a, int b) { int n; n = a + b; return n; } int sub(int c, int d) { int n; n = c - d; return n; } int mul(int e, int f) { int n; n = e * f; return n; } void main(void) { int x=1, y=2; int ans, ans2, ans3; ans = add(x, y); ans2 = sub(x, y); ans3 = mul(x, y); printf("%d\n",ans); printf("%d\n",ans2); printf("%d\n",ans3); } |
|
#include <stdio.h> int add(int a, int b); int sub(int c, int d); int mul(int e, int f); void main(void) { int x=1, y=2; int ans, ans2, ans3; ans = add(x, y); ans2 = sub(x, y); ans3 = mul(x, y); printf("%d\n",ans); printf("%d\n",ans2); printf("%d\n",ans3); } int add(int a, int b) { int n; n = a + b; return n; } int sub(int c, int d) { int n; n = c - d; return n; } int mul(int e, int f) { int n; n = e * f; return n; } |
|
int add(int a, int b); int sub(int c, int d); int mul(int e, int f); |
|
|
#include <stdio.h> int add(int a, int b); // プロトタイプ宣言 void main(void) // ここからがメインルーチン { int x=1, y=2; int ans; ans = add(x, y); // 関数add の呼び出し、戻り値をansに確保 printf("%d",ans); // 確保した ans を出力 } int add(int a, int b) // 実際の動作の定義 { int n; n = a + b; return n; } |
|
return 0; // 正常終了 return -1; // 異常終了 |
|
|