前回では、関数はmain関数より前にかくと説明しましたが、後ろに書くこともできます。
それに加え関数の応用的な使い方を説明していきたいと思います。
関数プロトタイプ宣言
関数をmain関数の後でも使えるようにするものを、「関数プロトタイプ宣言」といいます。
ソースコード
#include<stdio.h>
void print(void);
int main(void)
{
print();
return 0;
}
void print(void)
{
printf("hello\n");
}
ここで、関数プロトタイプ宣言をしている場所は、
void print(void);
という場所です。
やり方は簡単で、includeの下に、「戻り値 関数名(引数);」と書きます。
すると、ここではprint関数を使っていますが、main関数の下に書くことができます。
このプログラムにいくつの関数が使われているのかを一目で見ることもできるので、なるべくこのような書き方をしていきましょう。
関数の応用
引数には複数この要素を記述することができますが、戻り値には一つしか設定することができません。
複数の戻り値を設定するのは少し難しいので、「ポインタ」というところで解説します。
ここでは、複数の引数のプログラムを解説します。
ソースコード
#include<stdio.h>
int keisan(int x,int y);
int main(void)
{
int a;
int b;
int num;
printf("二つの整数を入力してください。\n");
scanf("%d",&a);
scanf("%d",&b);
num=keisan(a,b);
printf("合計は%dです。\n",num);
return 0;
}
int keisan(int x,int y)
{
return x+y;
}
このプログラムはmain関数で入力された要素をkeisan関数を使って計算するものです。
main関数で、引数を2つ設定するので、書き方は
int keisan(int x,int y)
という風に2つを記述します。
ここで注意するところは、「代入される順番」です。
keisan(a,b);
と書かれているので、
int xにはaが、int yにはbの値が代入されます。
数が3つになっても順番通りに代入されます。
練習問題
問題1 画面に「こんばんは」と出力しなさい。(関数プロトタイプ宣言を使うこと)
問題2 main関数で、3つの整数を入力し、その合計を出力しなさい。(関数名は、「goukei」とすること)
練習問題解答
問題1解答
#include<stdio.h>
void print(void);
int main(void)
{
print();
return 0;
}
void print(void)
{
printf("こんばんは\n");
}
問題2解答
#include<stdio.h>
int goukei(int x,int y,int z);
int main(void)
{
int a;
int b;
int c;
int num;
printf("整数を3つ入力してください\n");
scanf("%d",&a);
scanf("%d",&b);
scanf("%d",&c);
num=goukei(a,b,c);
printf("合計は%dです。\n",num);
return 0;
}
int goukei(int x,int y,int z)
{
return x+y+z;
}
引数の要素に一つ追加するだけです。
まとめ
関数を使うことによって、より分かりやすくプログラムを作成することができます。
さらに、エラーが出た時も直すことが容易になります。