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.