What is the difference between int *a[3] and int (*a)[3]?
int *a[3]
int (*a)[3]
Alternatively, you can use cdecl, which outputs the meaning of variable declarations in English.
cdecl
cdecl> explain int*a[3]
declare a as array 3 of pointer to int
cdecl> explain int (*a) [3]
declare a as pointer to array 3 of int