いつも感謝しています。Nです。
前回の記事"自作関数「無いのなら、作ってしまえ、関数を!」"で、自作関数の作成の基本についてお話しました。
今回は、引数をもつ自作関数についてお話したいと思います。
引数を持たすことで、自作関数を部品のように使えるようになり
再利用しやすくなります。
再利用しやすい自作関数を多く作成しておくことで、
大規模なプログラムを作成する際に、それらを組み合わせて非常にプログラムを楽に作成できるようになります。
ですので、
今回は、引数がある自作関数の基礎を是非マスターしてみてくださいね。
では具体的にお話していきます。
まずは、
前回のサンプルプログラムを、もう一度記載してみますね。
#include <stdio.h>
int sum( void );
int main( void )
{
sum( );
return( 0 );
}
int sum( void )
{
int ii;
int sum;
sum = 0;
for( ii = 1; ii <= 50; ii++ )
{
sum += ii;
}
printf( "sum = %d¥n", sum);
return( 0 );
}
この自作関数sumを実行すると、1~50までの合計値を表示されるプログラムでしたね。
でも、
この自作関数では、固定された1~50までの合計値しか表示することができません。
1~10までの合計値、或は1~100までの合計値を表示したいという場合を考えると、うーん、これは不便ですね。
何が不便だと感じるのでしょうか?
そう、今の自作関数sumは"50"という値で固定されているのが非常に不便ですね。
では、どうしたらいいのでしょうか?
そう、自作関数sumにもっと自由に終わりの数値を教えてあげることができれば自由が増しますね。
そこで、登場するのが”引数”なんです。
この"引数"というのを使うことで、関数に情報を渡すことができます。
つまり、
引数とは、関数に渡す情報だ
と考えてください。
引数をもつ自作関数の作成方法は、
自作関数の( )の中に、渡す情報を格納する変数を記載すればOKです。
例えば、先ほど上で述べた
「自作関数sumにもっと自由に終わりの数値を教えてあげたい」
と考えた場合、自作関数sumは以下のように作成します。
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 );
}
int sum( int end )の部分では、int型のendという変数に情報を入れて自作関数sumに渡しますという意味になります。
そして、for( ii = 1; ii <= end; ii++ )の部分で、前回は50だったのをendとしています。
endは、引数として渡された情報が入る変数になります。
では、
この新しい自作関数sumをmainから呼んであげることにしましょう。
呼び方は、簡単です。
main関数の中で、sum関数に渡したい実際の情報値をsumの( )の中に記載します。
例えば、sum関数に100という実際の情報値を渡したい場合は、sum( 100 );と書けばよいだけです。
サンプルプログラムを書いてみますね。
#include <stdio.h>
/* プロトタイプ宣言 */
int sum( int end );
int main( void )
{
/* 1~100までの合計値を算出する */
sum( 100 );
return( 0 );
}
/* 新しい自作関数sum */
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 );
}
実行結果:
sum = 5050
ここで、プロトタイプ宣言も変更していることも忘れないでくださいね。
プロトタイプ宣言は、自作関数の{ }の前の部分を取り出して;(セミコロン)を付けるのでしたね。
だから、int sum( int end ); となっていますね。
さて、ここまでくると
前回のサンプルプログラムの void の意味も分かってくると思います。
実は、voidとは「無し」という意味で、「引数はありません」ということを自作関数sumに教えていたのです。
以上、今回は自作関数に情報を伝えたい場合にどうしたら良いかの基本をお話しました。
サンプルプログラムの100の値を色々変えてみて、実際に試して確認してみてくださいね。