void* points to any type of data; in order to use it, you must cast it to another valid pointer type (char*, etc.). So I believe it is valid to do something like:
void* ptr = newchar;
However you would have to cast it to char* for most operations to make sense out of it. Hopefully someone more skilled can clarify this more for you.
Also, the code you have in the title is just a typedef. With a typedef like that, the following lines would be equivalent: