int *p = &a;
この書き方が理解を邪魔した
int *p;
p = &a;
と分けて書け