In realtà è più complicato. Il nome dell'array è di tipo array, ma in praticamente ogni contesto (tutto tranne che sizeof, & e poco altro) decade in un puntatore al primo elemento. &array restituisce un puntatore ad array, che ha lo stesso valore del puntatore al primo elemento, ma tipo diverso (concettualmente punta a tutto l'array, non al solo primo elemento), e in linea di principio non si può assegnare ad un semplice puntatore al tipo-base dell'array.