宣言は使うときと同じように書く。
初期化は宣言中の変数に対して行われる。

コンパイラが
int *p;
をみつけたとき、
pに参照演算子*を適用するとintになるんですな。
と解釈する。つまりはint型へのポインタへ変数だ。

int *p = a;

は
pに参照演算子*を適用するとintになるんですな。
ついでにpにaを入れて初期化するんですな。
と解釈する。

int *p = "ABC";
は、
pに参照演算子*を適用するとintになるんですな。
さらに静的領域に4バイトのメモリを予約して、そこにAとBとCと\0というコードを入れて置くんですな。
ついでにpにその連続したメモリの先頭アドレスを入れて初期化するんですな。
と解釈する。

宣言は使うときと同じように書く。
初期化は、宣言中の変数に対して行う。

覚えておけ。