名前空間
変種
操作

関数

提供: cppreference.com
< c‎ | language

関数は、複文 (関数の本体) を識別子 (関数名) に紐付ける C 言語の構成部品です。 すべての C のプログラムは main 関数から実行が始まり、他のユーザー定義のまたはライブラリの関数を呼び出したり、終了したりします。

// function definition.
// defines a function with the name "sum" and with the body "{ return x+y; }"
int sum(int x, int y) 
{
    return x + y;
}

関数は、実引数で初期化されるゼロ個以上の仮引数を受け取ることができ、return 文によって呼び出し元に値を返すことができます。

int n = sum(1, 2); // parameters x and y are initialized with the arguments 1 and 2

関数の本体は関数定義によって提供されます。 各関数は inline である場合を除き (C11およびそれ以降)プログラム内で一度だけ定義されなければなりません。

関数は入れ子にすることはできません (非標準のコンパイラ拡張によって許容されている場合を除きます)。 各関数定義はファイルスコープで現れなければならず、呼び出し元のローカル変数にアクセスすることはできません。

int main(void) // the main function definition
{
    int sum(int, int); // function declaration (may appear at any scope)
    int x = 1;  // local variable in main
    sum(1, 2); // function call
 
//    int sum(int a, int b) // error: no nested functions
//    {
//        return  a + b; 
//    }
}
int sum(int a, int b) // function definition
{
//    return x + a + b; //  error: main's x is not accessible within 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++リファレンス