ホームページ  >  記事  >  バックエンド開発  >  C プログラムの実行はどこで開始され、どこで終了するのでしょうか?

C プログラムの実行はどこで開始され、どこで終了するのでしょうか?

青灯夜游
青灯夜游オリジナル
2020-08-31 16:45:0923704ブラウズ

C プログラムの実行はどこで開始され、どこで終了するのでしょうか?

C プログラムの入り口は main 関数であり、通常の動作が終了するまでは、main 関数の最初の文から始まり、最後の文で終わります。 。

例:

int main()//程序开始
{
printf("Hello!\n");
return 0;//程序结束,返回值
}

ただし、プログラムが (メイン関数内で) return に遭遇した場合、(メイン関数内であってもサブ関数内であっても) プログラムの実行途中で終了します。 、番組も終了となります。

#C 言語での main 関数の書き方

main 関数は、C プログラムのエントリ関数です。つまり、プログラムの実行は main 関数を起点として、他の関数の呼び出しも main 関数内で直接的または間接的に呼び出されます。では、誰が main 関数を呼び出しているのでしょうか?答えはオペレーティング システムです。 C 言語の開発以来、main 関数の書き方にはさまざまな方法がありますが、 のさまざまな書き方を見てみましょう。注: テスト環境は Ubuntu 17.10、GCC バージョンは 7.2.0 です。

#NO.1

main(){}
例:

#include ade979de5fc0e1ca0540f360a64c230b
main(){
	printf("Hello World\n");
}



NO.2##

void main(){}
例:

#include ade979de5fc0e1ca0540f360a64c230b
void main(){
	printf("Hello World\n");
}


NO.3##

int main(){}
例:
#include ade979de5fc0e1ca0540f360a64c230b
int main(){
	printf("Hello World\n");
	return 0;
}


NO.4

int main(void){}
例:
#include ade979de5fc0e1ca0540f360a64c230b
int main(void){
	printf("Hello World\n");
	return 0;
}

# NO.5

int main(int argc,char *argv[]){}
例:
#include ade979de5fc0e1ca0540f360a64c230b
int main(int argc,char *argv[]){
	printf("Hello World\n");
	return 0;
}


NO .6

int main(int argc,char **argv){}
例:
#include ade979de5fc0e1ca0540f360a64c230b
int main(int argc,char **argv){
	printf("Hello World\n");
	return 0;
}


上記のテストから、方法 1 を書くと次のようになります。 C90 標準では正常にコンパイルされますが、C99 および C11 標準では警告がスローされます (戻り値は書き込まれません。デフォルトの戻り値は int です。これは、メソッド 1 とメソッド 3 を記述するのと同等です)。書き方2~6はC90、C99、C11規格でも正常にコンパイルできます。たくさんの書き方がある中で、main関数の標準的な書き方はどれでしょうか?そこで、C 標準ドキュメントで main 関数の標準的な記述方法を確認しました。以下の図を参照してください。

## 標準ドキュメントから、次の記述が確認できます。メソッド 4、5、および 6 は、main 関数を記述する標準的な方法です。書き込み方法 5 は、書き込み方法 6 と同等です。では、なぜ1.2.3という書き方があるのでしょうか?それは、C 言語が 1972 年に設計されてから C90 標準がリリースされるまで、C 言語の実装の違いにより main 関数に違いが生じたためです。方法 2 の書き方は、main 関数は OS によって呼び出されるため、強く推奨されません。OS は、main 関数の戻り値に基づいて、プログラムが正しく実行されたかどうかを判断します。 void が返された場合、それはどのような状態を表しますか?また、この書き方をサポートしているコンパイラもあれば、サポートしていないコンパイラもあり、すべての規格がこの書き方を認識しているわけではありません。書き方 1 と 3 はまだギリギリ許容範囲ですが、推奨されませんので、標準的な書き方に準じて書くのがベストです。なぜ標準的な書き方に従って書く必要があるのでしょうか?それは、C プログラムの移植性を高めるためです。書き方 5 は、書き方 6 と同じです。最初のパラメータは main 関数のパラメータの数を表し、2 番目のパラメータはポインタを使用してこれらのパラメータをそれぞれ指します。 argv[0]はプログラム名を表し、argv[1]からargv[argc-1]はプログラムパラメータを表します。 main 関数の戻り値を見てみましょう。下の図を参照してください。


図より、main 関数の戻り値が int 型の互換型の場合、main 関数から exit とともに返される値は exit xxx を実行したことと同等であることがわかります。 xxx は main 関数から返される値を表します。 return 文を書き忘れた場合、メイン関数本体の閉じ括弧 } が実行されると、デフォルト値 0 が返されます。 0 を返すことは、プログラムの実行が成功し、プログラムが終了することを意味します。 main 関数の戻り値の型が int 型と互換性のない型である場合、プログラムがオペレーティング システムに返すステータスは不明瞭になります。

C 標準ドキュメントのダウンロード アドレス:

ポータル: http://download.csdn.net/download/u012219371/10184521

C 標準の概要:

ポータル: http://blog.csdn.net/u012219371/article/details/78951972

関連する推奨事項: C 言語チュートリアル ビデオ

以上がC プログラムの実行はどこで開始され、どこで終了するのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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