+2 のアドレスを指すなら書き方は p + 2

*p と書くと、p の指すアドレスに保存されてるデータ。



たとえば char c = 'A'; で、
変数 c の、メモリー中での場所が、たとえば 0x1234 なら、
char* p;
p = &c; で,変数 p に記録される数字も 0x1234 になる。

0x1234 の場所に、実際に記録されてるデータは 'A'
A は、数字に直すと65。  変数 c には(メモリ番地0x1234の場所には)65という数字が記録されている。

p と書くと 0x1234 という数字を参照することになるので、p+2 なら 0x1234 + 2 = 0x1236 となる。 これなら c の +2 先のアドレスと同じ数字。

一方、*p と書くと 変数c(メモリ番地0x1234の場所)に記録されている65という数字を参照することになるので、
*p+2 は 65 + 2 という意味なので、 67 という数字を指す。
printf の %c に 67 という数字を渡すと C と表示される。 (「67ならCと表示する」という決まりなので)


0x1234 + 2 の 0x1236 の場所に、自動的に C (数字の67)が記録されたりはしてないと思います。