I have an array of int pointers
int (what here?) val = &arr;
Should just be:
int* array[SIZE]; int** val = array;
There's no need to use an address-of operator on
array since arrays decay into implicit pointers on the right-hand side of the assignment operator.