web-dev-qa-db-ja.com

int main()とvoid main()の仕組み

私はC言語の初心者です。 main()、int main()、void main()、main(void)、void main(void)、int main(void)がC言語でどのように機能するかを例を使用して誰でも詳細に説明できますか? void main()を使用すると何が起こるか、単純な言語でint main()を使用すると何が起こるかなどです。
私は知っていますが、それが何をしているのか理解できません:

  1. main()-関数には引数がありません
  2. int main()-関数はint値を返します
  3. void main()-関数は何も返しませんなど。

int main()return 0を使用して単純なhello worldを作成すると、void main())を使用した場合と同じ出力が得られるため、どのように機能しますか?その用途は何ですか?

13
user2106271

ANSI C 89を本当に理解したい場合は、1つだけ修正する必要があります。 ANSI C 89では、次の機能の違い:

_int main()
int main(void)
int main(int argc, char* argv[])
_

は:

int main()

  • 未知のタイプの未知の数の引数を期待する関数。アプリケーションソフトウェアのステータスを表す整数を返します。

int main(void)

  • 引数を必要としない関数。アプリケーションソフトウェアのステータスを表す整数を返します。

int main(int argc, char * argv[])

  • argc個の引数とargv []引数を期待する関数。アプリケーションソフトウェアのステータスを表す整数を返します。

各機能を使用する場合について

int main(void)

  • プログラムが実行/ロードするための初期パラメーターを必要としない場合(OSから受け取ったパラメーター-プログラム自体から)、この関数を使用する必要があります。

int main(int argc、char * argv [])

  • プログラムがロードするための初期パラメーター(OSから受け取ったパラメーター-プログラム自体から)を必要とする場合、この関数を使用する必要があります。

void main()について

ANSI C 89では、_void main_を使用してプロジェクトAS _-ansi -pedantic_をコンパイルすると(たとえばUbuntuで)、メイン関数がvoid型でint型ではないことを示す警告が表示されますが、プロジェクトを実行できるようになります。ほとんどのC開発者は、すべてのバリアントでint main()を使用する傾向がありますが、void main()もコンパイルされます。

13
Ron Nuni