argc, argv ってなに
このページ見ました: [法大奥山研究室]C言語:13.2. 標準入力:argc, argv, scanf, fscanf
public static void main(String[] args){ System.out.println("HelloWorld") ; }
これは、おなじみJavaを習い始めて最初にやるコード。
Javaは全然勉強してないこともあって、argsってなんだ……って思ってたんだけど、
今日Cのプログラムで
#include <stdio.h> int main(int argc, char **argv){ printf("%s \n", "Hello World! \n") ; }
という、引数がvoid(無し)でなくargc, argvとなってるのがあって気になったので調べた。
なんの略か
argc = argument count (引数の数)
argument = 引数
argv = argument vector(引数の一次元配列)
**argv なんだから二次元配列じゃない? って思うけど、英和辞書引いたら「vector:一次元配列」って書いてあったので辞書通りの訳で。
args は arguments か argument strings の略だと思います。
どう使うか
プログラムを実行するときに、たとえば「HelloWorld.exe hogehoge」ってコマンドプロンプトで実行させると、
上記のプログラムだったら実行結果が
hogehoge Hello World!
となる感じですね。
「HelloWorld.exe hoge imoge」みたいに実行させたら、
argc = 3 で、 *argv[0] = "hoge" *argv[1] = "imoge" *argv[2] = NULL となるようですね。
なるほどなー。
ふつうのプログラミングだとあんまり関係なさそうだけど、
アプリケーションへのショートカットを 「"--/--/app.exe" window-mode」とかすると
特別な起動方法になるアプリケーションってのは、きっとここが関連してるのだなあ。