変数pはあくまでポインタを格納する変数

アドレス p             0xどっか
      ↓            ↓
値    0xどっか        "abcdefg"

変数aはchar型配列を格納する変数

アドレス a
      ↓
値    "hijklmn"

pの場合、格納している値(p)と自分自身のアドレス(&p)は違う
aの場合、配列を格納する変数に添え字をつけないと配列の先頭アドレスを示すので、
配列の先頭アドレス(a)はaのアドレス(&a)と同じになる