"char*" ist just a pointer of a size of 1 byte.
I think you can convert any type to a (void*) and cast it into (char*)
but if your compiler is strictly it would throw an error "can't convert ..."
in this case : maybe there is a compiler option to smooth it down not to be too strictly
The size of 1 byte means: using the ++ operator the next adress will be 1 byte further
Some examples:
char* p1 = $0000;
p1++; // p1 points now to $0001
int* p2 = $0000; // int has a size of 4 bytes
p2++; // p2 points now to $0004