Arrays are second-class citizens in C (and therefore in C ++). For example, you cannot assign them. And it is difficult to transfer their functions without humiliating them to a pointer to their first element.
A pointer to the first element of an array can be used for most purposes, like an array, except that you cannot use it to get the size of the array.
When you write
void * pointer = a;
a , void*.
, :
A* b = static_cast<A*>(pointer);
(: reinterpret_cast, void*, , void* , static_cast.)