An array is more than just an address. Rather, an array is a contiguous sequence of objects of the same type. Hence, the array itself has a type, i.e., a combination of the type of an element of the array and the number of elements in the array.
In many contexts, an array is converted to a pointer to its first element. So, an array of 3 arrays of 4 ints is converted to a pointer to an array of 4 ints. Therefore, you should declare and initialise such a pointer:
Code:
int array[3][4];
int (*p)[4] = array;