ちょっと細かい話をさせてもらうと、本当は、

>ポインタと配列はまったくの別物であるが、Cの場合大抵の場面で
>ポインタと配列は同じように扱える

というのはまちがいで、

 1.Cにはポインタはあるが配列はない
 2.*(p+n)のシンタックスシュガーとしてp[n]がある

という方がすっきりしてると思うんだけど。で、

char a[] = "itteyo-shi";
char *p = "itteyo-shi";

では、aもpもポインタ。
ただ、どこに文字列データが確保されるかの違い、という説明。
どうすか?