All are valid statements, since you do not play them out because all pointers remain uninitialized or do not point to any valid memory locations.
And they are valid because the pointer is not a constant, but the value indicated by the pointer is constant. So, the pointers here are reassigned to point to a different location.
Mahesh
source share