C++
 Computer >> コンピューター >  >> プログラミング >> C++

【C/C++入門】void mainとint mainの違いとは?正しいmain関数の書き方を解説

C/C++のプログラムでは、エントリーポイントとして int main() を使うこともあれば、void main() を使うこともあります。では、この2つにはどのような違いがあるのでしょうか。本記事では、それぞれの特徴と使い分けのポイントをわかりやすく解説します。

main関数の基本的な役割

main() 関数は、他の関数と同様に引数を受け取り、値を返すことができます。しかし、main() には特別な役割があります。それは、プログラムの実行が必ずこの関数から開始されるという点です。

つまり、main() はオペレーティングシステム(OS)から呼び出される関数であり、main() 内で返された値はOSへと渡されます。この戻り値は、プログラムが正常に終了したかどうかをOSに伝えるための重要な情報になります。

void main() と int main() の違い

void main() は、main() 関数が何も値を返さないことを示します。一方、int main() は、main() 関数が整数型(int)のデータを返せることを示します。

プログラムが非常に単純で、コードの最終行まで問題なく実行され、途中で強制終了する必要がない場合は、void main() を使っても動作します。しかし、exit() 関数を使ってプログラムを任意のタイミングで終了させたい場合には、呼び出し元(OS)に対して整数値(0または0以外)を返す必要があります。このようなケースでは、void main() では対応できません。

int main() を使うべき理由

以上の理由から、void main() よりも int main() を使用することが推奨されます。特に、標準規格(ISO C/C++)では int main() のみが正式に定義されており、コンパイラによっては void main() が警告やエラーの対象になることもあります。

移植性や互換性を考慮すると、たとえ簡単なプログラムであっても、int main() を使って最後に return 0; を記述しておくのが良い習慣です。これにより、プログラムの終了ステータスを明確にOSへ伝えることができます。

  1. C++の静的変数・自動変数・グローバル変数・ローカル変数の違いを徹底解説

    C++の変数には、混同されやすい2つの独立した概念が存在します。 スコープ(scope) ... 名前がどこからアクセス可能かを決める概念。「グローバル」と「ローカル」に分類される 記憶域期間(storage duration) ... 変数がいつ生成され、いつ破棄されるかを決める概念。「静的」と「自動」に分類される スコープとは ローカル変数は、その関数またはコードブロックの内側にあるステートメントからのみ使用できます。ローカル変数は、他の関数からは参照できません。 サンプルコード #include <iostream> using namespace std; i

  2. C++における「宣言」と「定義」の違いとは?具体例でわかりやすく解説

    C++を学んでいると、「宣言(declaration)」と「定義(definition)」という2つの用語が頻繁に登場します。この2つはよく混同されがちですが、実際には明確な違いがあります。本記事では、その違いを具体例とともにわかりやすく解説します。 宣言(Declaration)とは? 宣言とは、プログラム内で使用する変数、ユーザー定義型、関数について、その型やサイズ(関数の場合は戻り値の型や引数の型・数)をコンパイラに事前に伝えることです。 重要なポイントは、宣言の段階ではメモリ上に領域が確保されないという点です。コンパイラに対して「この名前の変数や関数が後で登場しますよ」と知らせるだけの