メイン関数に引数としてデータを与えたい場合,コマンドライン引数を使う.その例のプ ログラムを,リスト1に示す.このプログラムは,実行ファイ ル名と引数をタイプして,実行させる.すると,メイン関数に引数という形でデータを渡 すことができる.この引数をコマンドライン引数と呼ぶ.
本当は,先に示したようにファイル名を引数にとって,その処理をするプログラムを例に
すべきであるが,ソースが長くなる.そのため,ここでは,引数の値を表示するプログラ
ムにとどめている.
1 #include <stdio.h> 2 3 int main(int argc, char *argv[]) 4 { 5 6 int i; 7 8 printf("argc = %d\n", argc); 9 10 for(i=0; i<argc; i++){ 11 printf("argv[%d] = %s\n", i, argv[i]); 12 } 13 14 return 0; 15 }
./cl hoge fugafuga
argc = 3 argv[0] = ./cl argv[1] = hoge argv[2] = fugafuga
このプログラムを見て分かるとおり,main()関数の引数は,次のようになっている.
int main(int argc, char *argv[])
ここで,仮引数の変数名argcはARGument Count,argvはARGument Vectorの略である.他の多くの言語でも,コマンドライン引数の変数名にはargcと argvを使う.C言語の場合,慣例としてargcとargvを使うが,他の変数名 でも問題はない.ただし,引数の型は変えてはならない.
ときどき,char *argv[]の代わりに,**argvと記述しているプログラム見る. これでも同じように動作する.なぜ,同じなの?--と言う疑問もあるだろう.説明すると, 結構長くなるし,退屈する者も出てくるだろう.興味のある者は,各自考えよ.
ようするに,文字列を表す場合,その先頭アドレスが必要と言うことである.