何int argc,char*argv[]を意味するのか。
-
26-09-2019 - |
質問
多くのC++のコンパイラが生成する主要機能が以下のようなものです:
int main(int argc, char *argv[])
私がコードC++なIDEでコンパイラのコマンドライン、タイプ:
int main()
なパラメータ。どういうことか、はたすことが不可欠である私のプログラム?
解決
argv
とargc
コマンドライン引数は、CおよびC ++でmain()
に渡される方法です。
argc
はargv
によって指される文字列の数になります。事実上すべての実装がアレイにプログラムの名前を付加します、これは(実際に)、引数の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());
得られないときには、いくつかの引数が渡されます。
二つの追加ないとい
- これらの二つの基準からの委署名のために
main
.場合は、各プラットフォームを受け入れ余分の引数または異なる戻り値の型、その延長および依拠されるべきではありませんでます。 *argv[]
や**argv
厳密に同等で書くことができint main(int argc, char *argv[])
としてint main(int argc, char **argv)
.
main
へのパラメータは、それが開始されたプログラムに提供されるコマンドラインパラメータを表します。 argc
パラメータは、コマンドライン引数の数を表し、そしてchar *argv[]
は、コマンドライン上に設けられた個々の引数を表す文字列(文字ポインタ)の配列である。
main
機能は、2つのパラメータ、argc
とargv
を持つことができます。 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可能であるか、または変形例のうちのいくつかを詳述するあなたの主な機能のための法的ます。