質問

多くのC++のコンパイラが生成する主要機能が以下のようなものです:

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

私がコードC++なIDEでコンパイラのコマンドライン、タイプ:

int main()

なパラメータ。どういうことか、はたすことが不可欠である私のプログラム?

役に立ちましたか?

解決

argvargcコマンドライン引数は、CおよびC ++でmain()に渡される方法です。

argcargvによって指される文字列の数になります。事実上すべての実装がアレイにプログラムの名前を付加します、これは(実際に)、引数の1を加えた数になります。

変数は、慣例によりargcの引数数の)とargvの引数ベクトルをの)名前が付けられていますが、それらは任意の有効な識別子を与えることができます:int main(int num_args, char** arg_strings)は等しく有効です<。 / P> あなたは、プロセスのコマンドライン引数に予定がない場合は、

また、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

他のヒント

argcは、コマンドラインとargvから、あなたのプログラムに渡される引数の数は、引数の配列です。

あなたが好きなそれらの数を引数をループを知ることができます:

for(int i = 0; i < argc; i++)
{
    // argv[i] is the argument at index i
}

例えば、皆さんが自分のプログラムが用 sh 書式):

myprog arg1 arg2 'arg 3'

場合は宣言されたメインとして int main(int argc, char *argv[]), そのほと環境)、 main() て呼び出される場合のように:

p = { "myprog", "arg1", "arg2", "arg 3", NULL };
exit(main(4, p));

ただし、宣言されたメインとして int main(), するというようなもの

exit(main());

得られないときには、いくつかの引数が渡されます。

二つの追加ないとい

  1. これらの二つの基準からの委署名のために main.場合は、各プラットフォームを受け入れ余分の引数または異なる戻り値の型、その延長および依拠されるべきではありませんでます。
  2. *argv[]**argv 厳密に同等で書くことができ int main(int argc, char *argv[]) として int main(int argc, char **argv).
mainへのパラメータは、それが開始されたプログラムに提供されるコマンドラインパラメータを表します。 argcパラメータは、コマンドライン引数の数を表し、そしてchar *argv[]は、コマンドライン上に設けられた個々の引数を表す文字列(文字ポインタ)の配列である。

main機能は、2つのパラメータ、argcargvを持つことができます。 argcは整数(int)パラメータであり、それはプログラムに渡される引数の数です。

は、プログラム名は常に最初の引数であるので、そこにプログラムするために、少なくとも1つの引数となり、argcの最小値が1になります。プログラム自体は二つの引数を持っている場合でも、argcの値は3になります。

文字配列に

パラメータargv点との引数ベクターすると呼ばれています。これは、関数の引数の1次元の文字列配列です。

最初のパラメータが設けられ、第2のパラメータは、それらの引数を表す文字列のリストである引数の数である。

int main();

これは簡単になります。ではできないコマンドライン引数になります。

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

この宣言に使用プログラムではコマンドライン引数になります。走らせたときのような:

myprogram arg1 arg2 arg3

argc, り、引数Countに設定されます4つの引数、 argv, は、引数のベクトル、人口との文字列へのポインタ"myprogram","arg1","arg2"、"arg3". のプログラムの呼び出し(myprogram は、引!

また、お客様の利用可能:

int main(int argc, char** argv);

これはも有効です。

ある他のパラメータを追加できます:

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

envp パラメータが含まれて環境変数です。各エントリ以下にこのフォーマット:

VARIABLENAME=VariableValue

このように:

SHELL=/bin/bash    

環境変数のリストがnullの場合-終了します。

重要: 使用しないでください argv または envp 値を直接電話 system()!この 巨大 セキュリティホールとして悪意のあるユーザーが設定環境変数をコマンドコマンドライン(可能性)が大量ます。一般に、だんに使用 system().がほとんど常により良い解決策を分析。

両方

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

CまたはC ++プログラムのエントリポイントの法的定義です。 Stroustrup氏:C ++スタイルとテクニックFAQ可能であるか、または変形例のうちのいくつかを詳述するあなたの主な機能のための法的ます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top