ちょっとよくわからないのですが。

char  c[5];
char* pc1;

とあった場合、
pc1 = c;
がだめ、という論理であるのはわかるのですが、

pc1 = &c;
もだめということになるんですよね?
これを認めると、
*pc1 は*(&c) すなわち cそのもの(配列全体)ということになるので。

とすると、配列を扱うためのポインタは常に
char (*pc2)[5];
のように宣言しなければならないということになるのですよね?

同様に、pc1[0]も言語仕様上あってはいけない、という論理展開に
なるのですよね?

なんだかすごく不便になるだけなんじゃないかという気がしますが。

-- 
General Shadow <general-s@mail.goo.ne.jp>