Yes and no. All pointers are the same - they contain an address in memory. That is why it is legal in C and C++ to convert any pointer, regardless of type, to a
void*
But when you work with pointers, their type does make a difference. Both when iterating over elements in an array (for this to work, the size of the elements must be known to the compiler, and the way we tell the compiler is through the type of the pointer), and when dereferencing a pointer to get to the data it points to. That is why casts between different types is dangerous.
<br />
int a = 1234;
int* b = &a;
char* c = (char*)b;
char d = *c;
long* e = (long*)b;
long f = *e;