In C++, pointers are strongly-typed. Therefore, you can’t assign a void pointer to any other pointer type without casting it explicitly:
int n;void *p = &n;int *pi=static_cast(p);//C++ requires explicit cast
size=3>
In C, the explicit typecasting is not required. By contrast, you can assign any data pointer to void* without casting:
string s;void *p=&s; // no cast required here
size=3>