argc/argv
概要

コマンドラインでプログラムを実行する際、プログラム名の後ろに半角スペースで区切って文字列を追加することがある。この追加された個々の文字列を「コマンドライン引数」と呼ぶ。argcとargvは、これらの情報を起動時に自動的に格納する変数である。
代表的な定義の形式は「int main(int argc, char *argv[])」である。argcは渡された引数の個数を表す整数型の変数、argvは各引数の文字列を順番に格納した配列型の変数である。
argcの値には、利用者が指定した引数だけでなく、プログラム自身の名前も1つとして数えられる。そのため、引数を何も指定せずに実行した場合でも、argcの値は1となる。利用者が指定した引数の個数を求める場合は、argcから1を引いた値を用いる。
argvの0番目の要素(argv[0])には実行したプログラムの名前またはパスが格納され、利用者が指定した最初の引数はargv[1]、2番目はargv[2]と続く。例えば、sampleという名前のプログラムを「sample input.txt output.txt」のように実行した場合、argcは「3」となり、argv[1]に「input.txt」、argv[2]に「output.txt」が格納される。argvの各要素は文字列型であるため、数値として扱う場合は整数や実数への変換が必要である。
「argc」「argv」という名称はC言語の仕様で規定されているわけではなく、慣習として広く定着した名前である。「argc」は「argument count」(引数カウント)、「argv」は「argument vector」(引数ベクタ)に由来するとされる。LinuxなどのUNIX系OSやWindowsなど様々な環境で共通して利用でき、コマンドラインツールやファイル変換プログラムなど多くのソフトウェアで、実行時の処理対象や動作モードの指定に活用されている。