1) since the p pointer is not initialized, it can point to any memory area. That's why assigning the value will cause an execution error (undefined behavior).
3) all good here - you can change the value of the pointer-constant
4) it is impossible to change the address of the pointer-constant
5) p2 - pointer to a constant value, and the value of the constant cannot be changed
6) all good here - a non-constant pointer was assigned to a pointer-constant