授業/C言語基礎/プロトタイプ宣言 のバックアップソース(No.3)

*プロトタイプ宣言 [#g0f406e5]

関数の''プロトタイプ宣言''は、関数の宣言です。
戻り値の型、関数名、引数の型、引数名を宣言します。
#geshi(c){{
  戻り値の型 関数名(引数1の型 引数1の名前, 引数2の型 引数2の名前, ...);
}}
関数を使う前に、プロトタイプ宣言が必要です。


#geshi(c){{
void inc(int i);  // プロトタイプ宣言


int main(void) {
  int i = 0;
  inc(i);  // 変数を渡す
  printf("%d\n", i);
  return 0;
}


/*
 *  受け取った引数の値を1増やして出力する(関数定義)
 */
void inc(int i) {{
  i++;
  printf(">> %d\n", i)
}
}}


*プロトタイプ宣言を省略できる場合 [#n39604f6]

以下の二つの場合には、プロトタイプ宣言を省略することができます。


**関数定義 [#xbc88dda]

関数定義はプロトタイプ宣言を兼ねています。

したがって、使用されるよりも前に関数が定義されている場合は、プロトタイプ宣言を省略できます。

これまでプロトタイプ宣言がなくても問題がなかったのは、このためです。


**関数の戻り値がint型 [#h5ceef01]

プロトタイプ宣言がないと、戻り値はint型であると仮定してコンパイルを進めます。

関数定義において戻り値がint型でないと、コンパイル時にエラーが発生します。



*プロトタイプ宣言における変数の有効範囲 [#g1b8651c]

関数のプロトタイプ宣言の引数として宣言した変数は、プロトタイプ宣言の中だけで有効です。

プロトタイプ宣言の引数の名前は、その関数の定義における引数の名前と同じである必要はありません。
ただし、引数の型は定義と同じでないといけません。


*まとめ [#d7dc0da7]


*課題・練習問題 [#z3bcf410]
**13C-1 プロトタイプ宣言 [#x75c0e9b]
次のプログラムにプロトタイプ宣言を追加せよ。
#geshi(c){{
int main(void) {
  double x1 = 1.2, x2= 2.4;
  double y = add(x1, x2);
  printf("%f\n", y);
  return 0;
}


double add(double d, double e) {
  return d + e;
}
}}
トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS