ホームページ  >  記事  >  バックエンド開発  >  C言語の唯一の関数は何ですか?

C言語の唯一の関数は何ですか?

烟雨青岚
烟雨青岚オリジナル
2020-07-06 17:16:214003ブラウズ

C 言語の唯一の関数は「main」関数です。 main 関数とも呼ばれる「main」関数は、プログラム実行の開始点です。他の関数がある場合は、他の関数の呼び出しを完了してから main 関数に戻ります。プログラム全体が終了します。

C言語の唯一の関数は何ですか?

C 言語の唯一の関数は次のとおりです: main 関数

main 関数 (main とも呼ばれます) function function はプログラム実行の開始点です

プログラムの実行は常に main 関数から開始されます。他の関数がある場合は、他の関数の呼び出しが完了した後、main 関数に戻り、最後に main 関数に戻ります。 main 関数で終了し、プログラム全体が終了します。プログラムを実行すると、システムによって main 関数が呼び出されます。

main 関数は、プログラム起動時に静的保存期間を持つ非ローカル オブジェクトの初期化が完了した後に呼び出されます。これは、ホストされた環境 (つまり、オペレーティング システム) 内のプログラムの指定されたエントリ ポイントです。スタンドアロン プログラム (ブート ローダー、オペレーティング システム カーネルなど) のエントリ ポイントは実装定義です。

main 関数の 2 つの仮パラメータ形式の仮パラメータを使用すると、実行環境から任意のマルチバイト文字列 (コマンド ライン パラメータと呼ばれることが多い) を渡すことができます (各ポインタ argv[1]. )。 argv[argc-1] は、これらの各文字列の最初の文字を指します。 argv[0] は、実行に使用されるプログラム自体の名前を表す、NULL で終了するマルチバイト文字列 (実行環境がサポートしていない場合は空の文字列 "") の最初の文字へのポインタです。

これらの文字列は変更できますが、変更内容は実行環境に戻されません。たとえば、std::strtok で使用できます。 argv が指す配列のサイズは少なくとも argc 1 であり、その最後の要素 argv[argc] はヌル ポインターであることが保証されます。

最新の C99 標準では、次の 2 つの定義のみが正しいです。

int main( void )  /* 无参数形式 */
{
    ...
    return 0;
}
int main( int argc, char *argv[] ) /* 带参数形式 */
{
    ...
    return 0;
}

int は、main() 関数の戻り値の型と、関数名の後の括弧を指定します。関数に渡される情報が含まれます。 void は、関数にパラメータが渡されないことを意味します。パラメータ化された形式については後で説明します。

古いバージョンの C コードを参照すると、プログラムが で始まることが多いことがわかります。

main()

このフォームが始まります。 C90 標準ではこの形式が許可されていますが、C99 標準では許可されていません。したがって、現在のコンパイラで許可されている場合でも、このように記述しないでください。

あなたも見たことがあるかもしれない別の形式があります。

void main()

一部のコンパイラではこの形式が許可されていますが、これを受け入れることを考慮した標準はありません。 C の父である Bjarne Stroustrup 氏は、彼のホームページの FAQ で次のように明確に述べています: void main() の定義は C や C には決して存在しませんでした。したがって、コンパイラはこの形式を受け入れる必要がなく、多くのコンパイラではこの形式での記述を許可していません。

標準を使用することにこだわる理由は、プログラムをあるコンパイラから別のコンパイラに移動しても、引き続き正常に実行できるということです。

推奨チュートリアル: 「C 言語

以上がC言語の唯一の関数は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。