bool getArray(int *array); takes a pointer to an int as an argument (effectively an array of ints to fill). bool getArray(int *array[]);takes an array of int pointers. The first one is the one you want, though the caller will need to allocate a sufficiently large output array so getArray() can copy the array elements into it.
One way to understand C pointer/array declarations is to think of them as illustrating how to access the base type. int *array means that if you say *array, you'll get an int. int *array[] means if you say *array[x], you'll get an int. char (*array)[5][2][3] means if you say (*array)[0 thru 4][0 thru 1][0 thru 2], you'll get a char.