What is the difference between int *a[3]
and int (*a)[3]
?
There is no difference between int a[3]
and int (a)[3]
, they both declare a
as an array of 3 int
s. There is a difference between int *a[3]
and int (*a)[3]
, the former declares an array of 3 pointers to int
whereas the second declares a pointer to an array of 3 int
s. The parenthesis make a difference here because in C brackets have a higher precedence than *.