argcとargv

1405 ワード

argcおよびargvのargは、「パラメータ」(arguments,argument counterおよびargument vector)を指す.
少なくとも2つのパラメータが主関数:argcとargvに渡されます.
argcは提供されたパラメータをプログラムに計算する.
argvは文字列配列に対するポインタである.
argc,argvはコマンドラインでプログラムをコンパイルするときに役立ちます.
メイン関数mainの変数(int argc,char*argv[])の意味:
一部のコンパイラではmain()の戻りタイプをvoidとして宣言できます.これは合法的なC++ではありません.main(int argc,char*argv[],char**env)こそUNIXとLinuxの標準的な書き方です.
Argc:プログラムを実行するときにmain関数に送るコマンドラインパラメータの個数を統計するために使用されます.
*argv[]:文字列パラメータを指すポインタ配列を格納し、各要素がパラメータを指す.
argv[0]は、プログラムが実行する全パス名を指す.
argv[1]は、DOSコマンドラインでプログラム名を実行した最初の文字列を指す.
argv[2]は、プログラム名を実行した2番目の文字列を指す.
...
argv[argc]はNULLである.
**env:文字列配列、env[]の各要素には、ENVAR=value形式の文字列が含まれています.
ここで、ENVARは環境変数であり、valueはENVARの対応値である.
argc,argv,envはmain()関数の前に割り当てられ,コンパイラが生成した実行可能ファイルであり,main()は真のエントリポイントではなく,特定のオペレーティングシステムに関係する標準的な関数である.
例:
#include 
 
int main(int argc, char*argv[])
{
    printf("%d
", argc); while(argc) printf("%s
", argv[--argc]); // argv return 0; }

これをtestにコンパイルすると仮定する.exe、コマンドラインの下
> test.exe test hello
結果は次のとおりです.
3
hello
test
test.exe
この例では、
argcは変数の個数、すなわちプログラムが実行する全経路名またはプログラムの名前、testとhelloの2つの変数を指すのでargcは3である.
argvはchar*の配列である、ここでargv[2]はhello、argv[1]はtest、argv[0]はtestを指す.exeのフルパス名またはtest.exe.