What is the difference between the followings?

It would be quiet helpful if you could also give me basics of how each are represented in memory?

char [10];
char *p;
const char *p;
char * const P;

Thanks in advance
Manav