I am trying to understand pointers in C but I am currently confused with the following:
char *p = \"hello\"
This is a char pointer
You're not allowed to change the contents of a string constant, which is what the first p points to. The second p is an array initialized with a string constant, and you can change its contents.
p