Int *ip[4] ip is combined with [] first, which means ip is an array, and then look at the previous int *, which means that this array is an array of int *, which means that this array stores pointers of type int.
Int (*ip)[4] Because there are parentheses, ip is combined with * first, indicating that ip is a pointer, and this pointer points to Int [], indicating that ip is a pointer to an int array.