int main (int argc, char *argv[])

おなじないのごとくint main (int argc, char *argv[])と書くわけですが、こいつの扱い方をそろそろ調べてみようと思った。argcは引数の数で、argvはcharのポインタを要素とする配列。argv[0]には実行ファイルの名前が入る。なんで配列要素数を渡す必要があるかというと、関数内では配列要素数を(正確には)把握できないから(らしい)。int->shortのキャストとかまぁその辺だろうけど、これは後日調べる。

プログラム
#include <stdio.h>
#include <stdlib.h>

// argv is array that contains char pointer
int main(int argc, char *argv[])
{   
    int i;

    // get argv element
    for ( i = 0; i < argc; i++ ) {
        char *s = argv[i];
        printf("%s\n", s);
    }

    // increment address, then get array element
    for ( i = 0; i < argc; i++ ) {
        printf("%s\n", *(argv+i));
    }
}
実行結果
kotaro@mac: > gcc main.c -o main.out; ./main.out 1 2
./main.out
1
2
./main.out
1
2

だんだん分かってきた(気がする)。そして、APUEは全然読み進められていない!