This is an array of 5 pointers to int:
int* a[5];
This is a pointer to an array of 5 ints:
int (*a)[5];
Here's an example of how you could initialize the pointer or the elements of the array of pointers:
int a[5] = {0, 1, 2, 3, 4};
int (*p)[5]; // pointer to array of 5 ints
int* b[5]; // array of 5 pointers to int
p = &a; // p points to a
for (int i = 0; i < 5; ++i)
std::cout << (*p)[i] << " ";
std::cout << std::endl;
// make each element of b point to an element of a
for (int i = 0; i < 5; ++i)
b[i] = &a[4-i];
for (int i = 0; i < 5; ++i)
std::cout << b[i] << " ";
std::cout << std::endl;
Note that although I have used C++ in the example, this applies to C and C++.