質問: stringの配列 となるのであれば、 list *arrayは「string型リスト」の配列にはなりませんよね? charはプリミティブだから扱いが違うという話なんでしょうか?
回答: `char *argv[]` は、`char *` の配列を意味します(関数の引数の場合実際はポインタ(`char**argv`))。「char 配列の配列」ではありません。 `char **argv` は、`char *` へのポインタを意味します。「charの連想配列」ではありません。 `argv`が`char *`の配列の最初を要素を指している時、 配列のそれぞれの要素(つまりchar へのポインタ)を`argv[インデックス]`でアクセスできるという意味で同じです。 ポインタは単純に最初の要素を指していて`[ ]`演算によって配列と同じようにアクセスできます。 もちろんその場合要素は並びになっている必要があります。