MMGamesロゴ  MMGames
Twitterシェアボタン  Facebookシェアボタン   
しんで覚えるC言語
しんで覚えるC言語

関数に数値を渡す

引数を持つ関数
前項で、sum関数を作り、1~100の合計の計算を部品化しました。
しかし、1~100の合計しか計算できないのでは不便です。
もっと自由な範囲の合計の計算ができたほうが便利です。

このような時のために、関数に情報(数値)を渡すことができます。
そのための仕組みが、引数と呼ばれる仕組みです。
引数を使うと、関数に数値を渡すことができます。

キーワード
【引数】

関数に渡す情報の総称


引数は、関数の()の中に書いて指定する必要があります。
前項で作成したsum関数では、引数はvoidとなっていました。
このvoidは、引数を使わない時に指定します。

引数を使う場合、()の中には、渡された数値を格納する変数を宣言します。
sum関数でint型の変数maxに数値を格納する場合、次の通りにします。

ソースコード
int sum(int max);

このように、使用する変数を指定する部分を仮引数と呼びます。

キーワード
【仮引数】

関数宣言に書かれた引数の型と名前のこと。


関数を変更した場合、プロトタイプ宣言も同様にする必要がありますが、
プロトタイプ宣言では変数を省略して型だけでも構いません。
次のプログラムは、sum関数を引数を受け取るように改造した例です。

ソースコード
#include <stdio.h>

int sum(int); /* プロトタイプ宣言 */

int main(void)
{
    return 0;
}

int sum(int max)
{
    printf("%d\n", (1 + max) * max / 2);
    return 0;
}

引数に指定した変数は、その関数内で普通の変数と同じように使用できます。
関数に数値を渡す
引数を持つ関数を呼び出す場合、数値を渡す必要があります。
それには、呼び出す時に、()の中に数値を書き込みます。
次のプログラムは、sum関数に50という数値を渡す例です。
なお、関数に渡す数値のことを、実引数と呼ぶことがあります。

キーワード
【実引数】

関数を呼び出す時に渡す数値のこと。



ソースコード
#include <stdio.h>

int sum(int); /* プロトタイプ宣言 */

int main(void)
{
    sum(50); /* 50を渡している */
    return 0;
}

int sum(int max)
{
    printf("%d\n", (1 + max) * max / 2);
    return 0;
}

このプログラムの実行結果は次のようになります。

実行結果
1275

これは、sum関数を呼び出す時に指定した50という数値が、
sum関数の仮引数である変数maxに代入されているのです。
当然、sum関数を呼び出す時の数値を変更すると、表示結果も変わります。

引数つきの関数を呼び出す場合、必ず数値を渡さなくてはいけません。
たとえば、次のようにしてsum関数を呼び出すとエラーとなります。

ソースコード
sum();

複数の引数
引数は、何もひとつだけに限定されているわけではありません。
必要とあれば、好きなだけの引数を持つ関数を作ることができます。

sum関数を、min~maxの合計値を求める関数にするには、
引数を2つに増やし、中身の式を入れ替えることで実現できます。
次の関数は、min~maxの合計を求めるよう改造した例です。

ソースコード
int sum(int min, int max)
{
    printf("%d\n", (min + max) * (max - min + 1) / 2);
    return 0;
}

複数の引数を使う場合、それぞれを,で区切って指定します。
ここでは両方にint型を使っていますが、別の型を混ぜても問題ありません。

この関数を呼び出す場合にも、数値を,で区切って指定します。
実引数と仮引数は、並べられている順番どおりに1対1で対応します。
次のプログラムは、改良したsum関数を呼び出す例です。

ソースコード
#include <stdio.h>

int sum(int, int); /* プロトタイプ宣言 */

int main(void)
{
    sum(50, 100);
    return 0;
}

int sum(int min, int max)
{
    printf("%d\n", (min + max) * (max - min + 1) / 2);
    return 0;
}

このプログラムの実行結果は次のようになります。

実行結果
3825

なお、プロトタイプ宣言も修正しています。
また、複数の引数を持つ関数では、すべての引数に数値を渡さないと呼び出せません。


本サイトについて

苦しんで覚えるC言語(苦C)は
C言語入門サイトの決定版です。
C言語の基本機能を体系立てて解説しており、
市販書籍と同等以上の完成度です。

第0部:プログラム概要編
  1. プログラムとは何か?
2章:プログラムの書き方
  1. 書き方のルール
  2. 書き方の慣習
  3. 練習問題2
3章:画面への表示
  1. 文字列の表示
  2. 改行文字
  3. 練習問題3
6章:キーボードからの入力
  1. 入力用の関数
  2. 入力の恐怖
  3. 練習問題6
9章:回数が決まっている繰り返し
  1. 繰り返しを行う文
  2. ループ動作の仕組み
  3. 練習問題9
10章:回数がわからない繰り返し
  1. 回数不明ループ
  2. 入力チェック
  3. 練習問題10
13章:複数の変数を一括して扱う
  1. 複数の変数をまとめて扱う
  2. 配列の使い方
  3. 練習問題13
20章:複数のソースファイル
  1. 最小限の分割
  2. 分割の定石
  3. 練習問題20

コメント
COMMENT

💬 コメント投稿欄を開く