関数
提供: cppreference.com
関数は、複文 (関数の本体) を識別子 (関数名) に紐付ける C 言語の構成部品です。 すべての C のプログラムは main 関数から実行が始まり、他のユーザー定義のまたはライブラリの関数を呼び出したり、終了したりします。
// 関数定義。
// 名前「sum」と本体「{ return x+y; }」を持つ関数を定義します。
int sum(int x, int y)
{
return x + y;
}
関数は、実引数で初期化されるゼロ個以上の仮引数を受け取ることができ、return 文によって呼び出し元に値を返すことができます。
int n = sum(1, 2); // 仮引数 x および y は実引数 1 および 2 で初期化されます。
関数の本体は関数定義によって提供されます。 各関数は inline である場合を除き (C11以上)プログラム内で一度だけ定義されなければなりません。
関数は入れ子にすることはできません (非標準のコンパイラ拡張によって許容されている場合を除きます)。 各関数定義はファイルスコープで現れなければならず、呼び出し元のローカル変数にアクセスすることはできません。
int main(void) // main 関数の定義
{
int sum(int, int); // 関数宣言 (任意のスコープに現れることができます)
int x = 1; // main のローカル変数
sum(1, 2); // 関数呼び出し
// int sum(int a, int b) // エラー、関数をネストすることはできません
// {
// return a + b;
// }
}
int sum(int a, int b) // 関数定義
{
// return x + a + b; // エラー、 main の x は sum の中ではアクセスできません
return a + b;
}
参考文献
- C11 standard (ISO/IEC 9899:2011):
- 6.7.6.3 Function declarators (including prototypes) (p: 133-136)
- 6.9.1 Function definitions (p: 156-158)
- C99 standard (ISO/IEC 9899:1999):
- 6.7.5.3 Function declarators (including prototypes) (p: 118-121)
- 6.9.1 Function definitions (p: 141-143)
- C89/C90 standard (ISO/IEC 9899:1990):
- 3.5.4.3 Function declarators (including prototypes)
- 3.7.1 Function definitions
関連項目
関数宣言 の C++リファレンス
|