Functions
関数は、C言語の構文要素であり、 複合文 (関数本体)を 識別子 (関数名)に関連付けます。すべてのCプログラムは、 main関数 から実行を開始し、プログラムは終了するか、他のユーザー定義またはライブラリ関数を呼び出します。
// 関数定義 // 名前「sum」と本体「{ return x+y; }」を持つ関数を定義する int sum(int x, int y) { return x + y; }
関数は function declaration または function definition によって導入されます。
関数はゼロ個以上の parameters を受け入れることができ、これらは function call operator の arguments から初期化されます。また、 return statement を通じて呼び出し元に値を返すことができます。
int n = sum(1, 2); // パラメータxとyは引数1と2で初期化される
関数の本体は 関数定義 で提供されます。各式で使用される各 inline でない (C99以降) 関数( 未評価式 を除く)は、プログラム内で 一度だけ定義 されなければなりません。
ネストされた関数は存在しません(非標準のコンパイラ拡張によって許可されている場合を除く):各関数定義はファイルスコープで記述されなければならず、関数は呼び出し元のローカル変数にアクセスできません:
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; }
参考文献
- C23規格 (ISO/IEC 9899:2024):
-
- 6.7.7.4 関数宣言子(プロトタイプを含む)(p: TBD)
-
- 6.9.2 関数定義 (p: TBD)
- C17 standard (ISO/IEC 9899:2018):
-
- 6.7.6.3 Function declarators (including prototypes) (p: 96-98)
-
- 6.9.1 Function definitions (p: 113-115)
- 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規格 (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++ documentation
for
関数の宣言
|