ハトネコエ Web がくしゅうちょう

プログラミングやサーバー・Web制作、チームマネジメントなど得た技術のまとめ

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」とかすると
特別な起動方法になるアプリケーションってのは、きっとここが関連してるのだなあ。