LoginSignup
81
53

More than 5 years have passed since last update.

argc,argvとは?

Last updated at Posted at 2018-12-27

今思えばもんのすんごい基本的なことであったが、プログラミング始めた当初よくわからなくて躓いたので後学の為に当時調べたことをメモ書き程度にまとめてみた。
※とはいえ、まだ勉強し始めたばかりなので、間違い箇所等ありましたらご指摘願います。。。

ネットで調べたところ、以下のような記述があった。
argc: "argument count"(引数の個数)の略。
argv: "argument vector"(引数の配列)の略。引数文字列の"配列へのポインタ"のことを指している。

しかし、なんとなくわかりそうで、でもピンとこない。

ということで、イメージは下の感じ
「hogehoge」というプロクラムを実行するときは

"hogehoge"

を書くだけで実行された。
しかし、このときに

"hogehoge abcde aiueo"

のように空白で区切り、文字列を並べることができる。
この文字列がコマンドライン引数と呼ばれるものである。

このときの引数(正確にはプログラム名+引数)の個数が

"argc"

であり、

引数の値を格納する配列のことを

"argv"

という。

そのため、今回の例に当てはめると

argc = 3
argv[0] = hogehoge
argv[1] = abcde
argv[2] = aiueo

となるわけである。
argc(引数の数)と言っておきながら、プログラム名(今回はhogehoge)
も含まれているので、argcの値は実引数の数よりも1多くなります。
あー、ややこC

※コメント欄にて記述がございますように、一部のソースコードには
例外的にプログラム名が使用されていない場合もあります。
 そのため、必ずargv[0]にプログラム名が入っているわけではない
ので、そのことを頭の片隅に入れておくと今後役立つかもしれません。
 (ご指摘いただいたangel_p_57さん、drabさん、感謝いたします)

なお、C言語のプログラム内でコマンドライン引数を使用するには、
以下のようにすることが一般的である(と思われる…)。

main(int argc, char *argv[])

81
53
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
81
53