char a[] = "itteyoshi";
の場合、どちらも非constなので問題なし。
char *p = "itteyoshi";
の場合、右辺はconstなのでconstへのポインタから非constへのポインタの代入なので警告対象。
勿論、
char const *p = "itteyoshi";
ならば、どちらもconstなので問題なし。
但し、
p[0] = 'I';
とすると、その時点でエラーになるはず。

>>843
前者は文字列のコピーが発生するが、後者はポインタのみの代入。