1. ホーム
  2. c++

[解決済み] int argc, char *argv[] とはどういう意味ですか?

2022-03-16 03:57:25

質問

多くのC++のIDEやコンパイラでは、main関数を生成するとき、次のように表示されます。

int main(int argc, char *argv[])

IDEを使わずに、コマンドラインコンパイラだけでC++をコーディングするとき、私はタイプします。

int main()

をパラメータなしで実行します。 これは何を意味し、私のプログラムにとって不可欠なのでしょうか?

どのように解決するのですか?

argvargc は、コマンドライン引数が main() CやC++では

argc が指す文字列の数になります。 argv . 事実上すべての実装では、プログラムの名前を配列の先頭に付けるので、(実際には)これは1+引数の数になります。

変数の名前は argc ( 引数数 ) と argv ( 引数ベクトル ) を使うことが慣例となっていますが、有効な識別子であれば何でも構いません。 int main(int num_args, char** arg_strings) も同様に有効である。

また、完全に省略することも可能で、その場合は int main() コマンドライン引数を処理するつもりがない場合。

次のプログラムを試してみてください。

#include <iostream>

int main(int argc, char** argv) {
    std::cout << "Have " << argc << " arguments:" << std::endl;
    for (int i = 0; i < argc; ++i) {
        std::cout << argv[i] << std::endl;
    }
}

で実行する ./test a1 b2 c3 を出力します。

Have 4 arguments:
./test
a1
b2
c3