名前空間
変種
操作

関数

From cppreference.com
< c‎ | language

関数とは、複合文(関数本体)を識別子(関数名)に関連付けるC言語の構文です。すべてのCプログラムはmain関数から実行を開始し、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;
}

関数は関数宣言または関数定義によって導入されます。

関数は0個以上の仮引数 (parameter) を受け取ることができ、それらは関数呼び出し演算子実引数 (argument) から初期化されます。また、return文によって呼び出し元に値を返すことができます。

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

関数の本体は関数定義で提供されます。(評価されない場合を除き)式中で使用されるインライン(C99以降)関数はそれぞれ、プログラム中でただ一度だけ定義されなければなりません。

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

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;
}

[編集] 参照

  • C23標準 (ISO/IEC 9899:2024)
  • 6.7.7.4 関数宣言子(プロトタイプを含む) (p: TBD)
  • 6.9.2 関数定義 (p: TBD)
  • C17標準 (ISO/IEC 9899:2018)
  • 6.7.6.3 関数宣言子(プロトタイプを含む) (p: 96-98)
  • 6.9.1 関数定義 (p: 113-115)
  • C11標準 (ISO/IEC 9899:2011)
  • 6.7.6.3 関数宣言子(プロトタイプを含む) (p: 133-136)
  • 6.9.1 関数定義 (p: 156-158)
  • C99標準 (ISO/IEC 9899:1999)
  • 6.7.5.3 関数宣言子(プロトタイプを含む) (p: 118-121)
  • 6.9.1 関数定義 (p: 141-143)
  • C89/C90標準 (ISO/IEC 9899:1990)
  • 3.5.4.3 関数宣言子(プロトタイプを含む)
  • 3.7.1 関数定義

[編集] 関連項目

関数の宣言C++ドキュメント
English 日本語 中文(简体) 中文(繁體)