In the declaration

p = &a[2] is the & sign not redundant. The arrays are supposed to decay into pointers.