May I know why this assignment is possible?
char const *c = "Hello";
c = "there!";
Yes, const applies to whatever is to the left of it (unless there is nothing to the left of it).
You're just pointing c to a different string.