main() 関数

プログラムが実行を開始すると、システムは main 関数を呼び出します。 この関数は、プログラムのエントリー・ポイントを表します。 デフォルトでは、main は、ストレージ・クラス extern を持ちます。 どのプログラムにも、main という名前の関数が 1 つなければなりません。そして 、次の制約が適用されます。
  • プログラムにあるそれ以外の関数を main と呼ぶことはできません。
  • main は、inline または static と定義すること はできません。
  • C++ main は、プログラム内から呼び出すことはできません。
  • C++ main のアドレスを取得することはできません。
  • C++ main 関数を多重定義することはできません。
関数 main は、次のいずれかの形式で、パラメーターを指定せずに、またはパラメ ーターを指定して定義することができます。
int main (void)
int main ( )
int main (int argc, char *argv[])
int main (int argc, char ** argv)
どのような名前もこれらのパラメーターに付けることはできますが、 それらは通常、argc および argv と呼ばれています。 最初のパラメーターの argc (引数カウント) は、プログラムが開始された時、 コマンド行にいくつの引数が入力されたかを示す整数です。 2 番目のパラメーターの argv (引数ベクトル) は、文字オブジェクトの配列を指 すポインターの配列です。配列オブジェクトはヌル終了ストリングであって、プログラムが開始された時、 コマンド行に入力された引数を表します。

この配列の最初のエレメント argv[0] は、コマンド行から実行されているプログ ラムのプログラム名または起動名が入っている文字配列を指すポインターです。argv[1] は、プログラムに渡される 最初の引数を示し、argv[2] は 2 番目の引数などとなります。

次のプログラム例 backward は、コマンド行に入力された引数を、最後の引数が 最初に印刷されるように印刷します。
#include <stdio.h>
int main(int argc, char *argv[])
{
  while (--argc > 0)
    printf(“%s ”, argv[argc]);
  printf("¥n"); 
}
以下を指定してコマンド行からこのプログラムを呼び出します。
   backward string1 string2
出力は、次のとおりです。
   string2 string1

引数の argcargv に は以下の値が入ります。

オブジェクト
argc 3
argv[0] ストリング “backward” を指すポインター
argv[1] ストリング “string1” を指すポインター
argv[2] ストリング “string2” を指すポインター
argv[3] NULL