[c言語]関数プロトタイプ宣言

C言語

関数プロトタイプ宣言って何ですか?

それはね、今回の内容の範囲だからしっかり学んでいってね!

はーい!

じゃあ先生お願いします!

了解しました!しっかりきいてくださいね!

関数プロトタイプ宣言とは?

戻り値の型 関数名(型名1 仮引数1、型名2 仮引数2、…….);

  • 関数プロトタイプ宣言は、関数定義の構文における関数本体をセミコロン「;」に置き換えたもの
  • 通常、#includeとメイン文の間に記述する。
  • 仮引数名は記述せず、型名だけ列挙してもよい。
  • 関数定義とプロトタイプ宣言において、仮引数の数や、肩の並びなどは同一でなければならない。
プロトタイプ宣言は、先に使う関数を中身以外を書いてしまうということですね。
関数呼び出しを記述する部分よりもに関数定義を記述しなければなりませんし、多くの関数定義を用いて複雑な処理を行うプログラムでは、関数の定義の順序に注意する必要があります。

ヘッダーファイルのインクルード

  • 標準ライブラリ関数(printf関数やscanf関数など)の関数プロトタイプ宣言はstdio.hファイル(ヘッダーファイル)に記述されている。
  • #include 命令によってヘッダーファイルを取り込むことをインクルードするという。

ー例 #include <stdio.h>

みなさんが最初に書いていた#include <stdio.h>というのは、stdio.hというヘッダーファイルを読み込むという意味だったんですね。

関数プロトタイプ宣言サンプルコード

#include <stdio.h>

int max2(int a,int b);
int max4(int a,int b,int c,int d);

int main(void){

  int a,b,c,d;

  printf("整数a: "); scanf("%d",&a);
  printf("整数b: "); scanf("%d",&b);
  printf("整数c: "); scanf("%d",&c);
  printf("整数d: "); scanf("%d",&d);

  printf("最大値は%dです\n",max4(a,b,c,d));

}

int max2(int a,int b){

  return a>b ? a : b;

}

int max4(int a,int b,int c,int d){

  return max2(max2(a,b),max2(c,d));

}

/* 実行結果
整数a: 4
整数b: 81
整数c: 57
整数d: 33
最大値は81です
*/

これまでの違うのは、先に使う関数を記述していますね。

最後にセミコロン「;」をつけてください。

あと気になるところは、a>b ? a : bのところですかね。

意味はbよりもaの方が大きいならaを選択、それ以外ならbを選択するという意味ですね。

if(a>b) return a;

else return b;と同じです。

以上で終了となります。ありがとうございました。

コメント

タイトルとURLをコピーしました