質問: C言語のプログラムを勉強中に、 int main() { 処理; } ではなく, int main(int argc, char *argv[]) { 処理; } のように、main関数に引数が指定されているプログラムを見つけました。 そこで疑問に思った事があるのですが、int argc, char *argv[]は何の略称で、何の意味があり、何の為に記述されているのですか?初歩的な質問ではありますが、返答よろしくお願いいたします!
回答: Windowsで言えばDOSプロンプトなどを使ったことがないとちょっと馴染みがないと思いますが,たとえばフォルダ内のファイルの一覧を列挙するコマンドでDirなんてのがありますが,これはいろんなオプションを付けて動作を変化させることができるのです. たとえば Dir *.exe なんてすると,拡張子がexeとなってるものを列挙してくれます. このときargcは2が入り,argv[1]には*.exeが入ってきます. *.exeがつかない時はargcは1,ですね. 1ならば全部表示する,2以上ならば何かオプションが付いているんだろう,と見分け,そのオプションは[1],[2]...と見ていくことができる,というわけです(いくつまで括弧があるか,っていうのはargcからわかるわけです). こんな感じで同じプログラムだけど,オプションつけると機能が変化する,なんてときに使うものなので,exeのアイコンをダブルクリック,っていう環境だけだとちょっと馴染みがないかな?って思います.