>>38
>>37 の言ってるのは &a のことだと思う。
普通は使わない。

>>29 みたいな感じで、固定長文字配列の配列全体を渡す際に、
文字配列へのポインタを渡す事ならあり得るが、普通はあまり使う機会は無いと思う。

#define HOGE_SIZE (3)
void foo(const char (*hoge)[HOGE_SIZE]);
static const char hoge[][HOGE_SIZE] = {
 "ho", "me", "pa", "ge",
};
foo(hoge);
/* hoge は &hoge[0] に同じだが、
  hoge[0] は "ho" という文字列全体を表す配列変数なので、
  &hoge[0] は上記の &a に相当する */

普通は文字列の先頭アドレスへのポインタの配列を使うし
(長さ揃ってなくてもいいし長さを指定しなくても良くて便利なので)。

void foo(const char *const *hoge);
static const char *const hoge[] = {
 "ho", "me", "pa", "ge",
};
foo(hoge);