Cのポインタについてなのですが
int c;
int *p; /* ポインタの宣言 */
c = 1;
p = &a;
とすると、pにaのアドレスを代入
*p = 1;
ならpの中のアドレスのさす変数aに1を代入
ですよね?

*がない場合はアドレスを入れるものだと思ってたのですが
文字列を扱うときには
char *p = "ABC";
宣言時だろ*があったのですが
後から代入するときには
char *p;
p = "ABC";
という風に*がありませんでした
アドレスの代わりにABCが入ってるのですか?
どのような解釈をすればよろしいのでしょうか
教えてください