An array in C++ stores a collection of elements of the same type, while an array of pointers stores memory addresses pointing to different variables or objects. The former directly holds the values, while the latter holds the addresses of the values.