It’s the special property that void* can also be assigned a pointer to a pointer and cast back and the original value is received.
I read this line somewhere. Does it means void* and void** are same?
What is the difference?
Edit
void* can hold any pointer. Then what’s void** needed for?
One points at a black hole.
The other points at the thing pointing at the black hole.
They’re not really the same thing, but pointers can be converted to
void *. You can convertint *to avoid *because, well, it’s a pointer.void **is still a pointer (it just points to a pointer), and since it’s a pointer, you can convert it to avoid *. That make any sense?That said, I don’t think I’ve ever had a use for a
void **, but if you needed an array ofvoid *s, then the type would bevoid **. (In C)void *is often used to hold a pointer to some user data – but you won’t know ahead of time what type that data will be. If you had an array of those, thenvoid **.Since you also have this tagged as C++: The previous case doesn’t really apply: you could use a
std::vector<void *>. Really,void *might be questionable – an abstract base might fit your purposes better.void *is useful mostly in C.