配列の値のとり方

例えば以下のようなデータがあるとき、

char *month[] = {"January", "February", "March"    ,
                 "April"  , "May"     , "June"     ,
                 "July"   , "August"  , "September",
                 "October", "November", "December" ,};

"March"の1文字目 M を取るとき、以下のようには書けない。

month[2][0]    /* エラー */


以下のように書けば、大丈夫。

/* ポインタのポインタとして書く */
*(*(month + 2) + 0)

/* ポインタと配列の組み合わせで書く*/
*(month[2] + 0)
(*(month + 2))[0]

/* 二次元配列っぽく書く*/
(month[2])[0]


問題は、どのパターンが一番分かりやすいのかがよく分からないところ。
真ん中の2つはないと思うけど、ポインタで書くのと配列で書くのとどっちがいいんだろう?


ポインタ派の方が主流のような感じがするけど、僕は配列で書くほうが分かりやすいと思う。


ただし、ポインタ自体をインクリメントしまくるときは、当然ポインタで書くことになる。
用途によって適切に使い分けられれば良いけど、その辺の加減がよく分からんなー。