char a[] = "A";
char *p = a;
は別物(同じだと説明している入門書があるならクソ本)
&a[0] を a と省略出来るだけ
もちろん sizeof p と sizeof a[0] と sizeof a は違う