hi
when we declare a pointer like int *a anything before * tels ihe type of variable of which addres the ponter will store.
like in this case a will store the address of a int type
and everything after * tells about the tupe of the pointr
like in const char * const p
const char is the type of var whose address will bestored in p while const after * tells about the ponter itself that is it is a constant pointer
now in ur prog. when u write const char *q hello it means that hello is a constant and can;t be modified hence *q 'm' an error
while in char *const p hai p is aconst ponter so p bye is not valid.