Changing the type of the pointer is not really a problem, this address will still be valid. However, interpreting pointy data as signed / unsigned matters if and only if ... the signed data is negative. So, in your example, if your char always positive, then this is normal, otherwise it is not.
Example of signed / unsigned tricks:
char c = 42; char d = -42; unsigned char cu = c; unsigned char du = d; printf("c %d\n", c); printf("cu %d\n", cu); printf("d %d\n", d); printf("du %d\n", du);
Conclusion:
c 42 cu 42 d -42 du 214
wap26 source share