Inicialización de matriz en C

Tengo dudas sobre el siguiente código:

int main()
{
    int array1 = {1,2,3,4,5}; //error in c++ , warning in c
    int array2[] = {1,2,3,4,5};
    int array3[5] = {1,2,3,4,5};
}

Este código da un error en la línea 3 enc++ pero no enc?

Lo séarray1 es en realidad unint yarray2 yarray3 son matrices, entonces ¿por qué noc el compilador muestra un error, pero solo una advertencia: "elementos en exceso en la inicialización escalar"

¿Existe un uso de dicha definición y por qué es válida enc?

Respuestas a la pregunta(7)

Su respuesta a la pregunta