No, a pointer in C/C++ is fully typed. The only pointer that really points to a chunk of memory is the void*, but you usually don't want to use it. As a result, it usually happens that you have to typecast a pointer explicitly if you want to make it act as if it was another pointer type:
int anint;
int *p1 = &anint;
char *p2 = (char *) p1;