C 言語の関数宣言の形式は、関数定義内の関数本体を削除し、セミコロンを追加した形式になっており、関数が未定義になる前にプログラムが関数を使用してプログラムが動作しなくなるのを防ぐためです。エラーを報告します。
C 言語コードは上から下に実行されます。原則として、関数定義は関数呼び出しの前に指定する必要があり、そうでない場合はエラーが報告されます。ただし、実際の開発では関数定義前に使用することが多く、その際には事前に宣言しておく必要があります。次に記事では、一定の参考効果のある関数宣言に関する知識を詳しく紹介しますので、皆様のお役に立てれば幸いです。
[おすすめコース: C言語チュートリアル]
関数宣言
だから-call 宣言は、この関数を使用することをコンパイラに伝えるためのものです。その定義が今見つからなくても問題ありませんが、定義は後で追加されるため、エラーを報告しないでください。
関数宣言の形式は非常に単純で、以下に示すように、関数定義内の関数本体を削除してセミコロン; を追加するのと同じです:
返回值类型 函数名( 类型 形参, 类型 形参… );
仮パラメータを記述しないこともできます。データ型のみ:
返回值类型 函数名( 类型, 类型…);
関数宣言では、関数名、戻り値の型、パラメーターのリスト (パラメーターの型)、および関数のプロトタイプ (関数プロトタイプ) と呼ばれるその他の関数に関連する情報が指定されます。
関数プロトタイプは、コンパイラが関数の存在とその既存の形式を認識できるように、関数に関連する情報をコンパイラに伝えるものです。関数が一時的に定義されていなくても、コンパイラはその関数の使用方法を知っています。
関数宣言を使用すると、関数定義は、他のファイル、スタティック リンク ライブラリ、ダイナミック リンク ライブラリなどのどこにでも出現できます。
例:
#include <stdio.h> // 函数声明 long factorial(int n); //也可以写作 long factorial(int); long sum(long n); //也可以写作 long sum(long); int main(){ printf("1!+2!+...+9!+10! = %ld\n", sum(10));return 0; } //求阶乘 long factorial(int n) { int i; long result=1; for(i=1; i<=n; i++){ result *= i; } return result; } // 求累加的和 long sum(long n) {int i; long result = 0; for(i=1; i<=n; i++) { //嵌套调用 result += factorial(i); } return result; }
実行結果は次のとおりです: 1! 2! ... 9! 10! = 4037913
printf を使用すると、 ( )、puts()、scanf()、getchar() およびその他の関数は、ヘッダー ファイル stdio.h を導入する必要があります。多くの初心者は、stdio.h に関数定義 (つまり、関数本体) が含まれていると考えています。がヘッダー ファイルである場合、プログラムは実行できます。実際にはそうではありません。ヘッダー ファイルには関数定義ではなく関数宣言が含まれています。関数定義はすべてシステム ライブラリ内にあります。システム ライブラリなしでヘッダー ファイルのみがある場合は、リンク中にエラーが報告されます。そしてプログラムはまったく実行されなくなります。
要約: 以上がこの記事の全内容です。皆様のお役に立てれば幸いです。
以上がC言語の関数宣言の見方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。