いつも感謝しています。Nです。
今回は引数の続きをお話したいと思います。
前回は、
引数が一つだけのお話をしましたが、
実は引数は、必要とあれば好きなだけ関数に渡すことができます。
つまり、
関数に様々な複数の情報を渡すことができます。
これをマスターすることで、自作関数の流用性が更にアップしますので是非マスターしてくださいね。
では具体的にお話しします。
まずは、前回のサンプルプログラムをもう一度記載します。
#include <stdio.h>
int sum( int end );
int main( void )
{
sum( 100 );
return( 0 );
}
int sum( int end )
{
int ii;
int sum;
sum = 0;
for( ii = 1; ii <= end; ii++ )
{
sum += ii;
}
printf( "sum = %d¥n", sum);
return( 0 );
}
このサンプルプログラムは、
1~end(引数)の合計値を表示するというプログラムでした。
自作関数sumに引数endを持たすことで、たとえば、1~10の合計値、1~100の合計値というふうに、引数が1個でも無いときに比べると、関数の流用性がアップしたと思います。
しかしここで更に、
「うん、確かに流用性はアップしたなぁ」
「でも、最初の”1~end”の"1"の部分も自由な値にしたいなぁ」
「そうすれば、もっとこの自作関数の流用性がアップするなぁ」
と考えたとします。
つまり、
5~10までの合計値、3~100までの合計値といったように。
この場合、自由に変動する値(変数)が二つありますよね。
つまり、スタートの値とエンドの値。
そこで、
このスタートの値とエンドの値という二つの情報を自作関数sumに渡してしまおうと考えます。
実際にこの場合の自作関数sumを以下に書いてみますね。
int sum( int start, int end )
{
int ii;
int sum;
sum = 0;
for( ii = start; ii <= end; ii++ )
{
sum += ii;
}
printf( "sum = %d¥n", sum);
return( 0 );
}
もう気づいた方もいるかもしれませんね。
そう、複数の引数を関数に渡す場合は、それぞれの引数を「,」(カンマ)で区切って追加していけばいいだけなんです。
では、新しい自作関数sumをmainから呼んであげることにしましょう。
呼び方は前回の引数1つのときとよく似ています。違いは「,」(カンマ)で区切ってあげるということぐらいです。
たとえば、
5~10までの合計値ならば、sum( 5, 10 );
3~100までの合計値ならば、sum( 3, 100);
のようにします。
ここで、ひとつだけ注意点があります。それは、( )の中の順番です。
つまり、
自作関数sumを作成したときの、引数の並び順に対応した順に書く必要があります。
先に上であげた例では、
int sum( int first, int end )と作成したので、sum( 5, 10 ); と書いています。
では、実際にプログラムを書いてみます。
#include <stdio.h>
/* プロトタイプ宣言(ここも変わるので注意!) */
int sum( int first, int end );
int main( void )
{
/* 5~10までの合計値表示 */
sum( 5, 10 );
/* 3~100までの合計値表示 */
sum( 3, 100 );
return( 0 );
}
/* 自作関数 */
int sum( int first, int end )
{
int ii;
int sum;
sum = 0;
for( ii = first; ii <= end; ii++ )
{
sum += ii;
}
printf( "sum = %d¥n", sum);
return( 0 );
}
実行結果:
sum = 45
sum = 5047
以上、今回は複数の情報を引数として自作関数に渡す方法について述べました。
自作関数の流用性がアップしてきているという感じを、実感するためにも、是非色々と今回のサンプルプログラムをいじって試して確認してみましょうね。