引数argc
とargv
ofmain
は、引数をプログラムに送信する方法として使用されます。おそらく最もよく知られている方法は、ユーザーが入力できる古き良き端末を使用することcat file
です。ここでの単語cat
は、ファイルを取得して標準出力 ( stdout
) に出力するプログラムです。
プログラムは で引数の数と で引数argc
のベクトルを受け取りますargv
。上記では、引数の数は2 で (プログラム名は最初の引数としてカウントされます)、引数のベクトルには [ , , null ]が含まれます。最後の要素がヌルポインターである間。cat
file
通常、次のように記述します。
int // Specifies that type of variable the function returns.
// main() must return an integer
main ( int argc, char **argv ) {
// code
return 0; // Indicates that everything went well.
}
プログラムが引数を必要としない場合はmain
、次のように -functionを記述しても同じように有効です。
int main() {
// code
return 0; // Zero indicates success, while any
// Non-Zero value indicates a failure/error
}
C 言語の初期のバージョンでは、これが暗示されていたため、int
以前はありませんでした。main
現在、これはエラーと見なされています。
POSIX準拠のシステム (および Windows) では、プログラム環境変数のベクトルを含む 3 番目のパラメーターを使用する可能性がchar **envp
あります。関数の引数リストにはさらにバリエーションがありますが、非標準であるため、ここでは詳しく説明しません。main
また、変数の命名は慣例であり、実際の意味はありません。他の人を混乱させないようにこれに従うことは常に良い考えですが、次のように定義することも同様に有効ですmain
。
int main(int c, char **v, char **e) {
// code
return 0;
}
2 番目の質問については、プログラムに引数を送信する方法がいくつかあります。POSIX標準exec*()
の関数ファミリーを参照することをお勧めしますが、を使用する方がおそらく簡単ですが、 の使用は通常、すべてのシステムで動作することが保証されているわけではないため、嫌われています。私は自分でテストしていません。ただし、*NIX システムに、、またはその他のシェルがインストールされていない場合は失敗します。system
("command arg1 arg2")
system()
bash
zsh
system()