Inicialização de matriz em C

Tenho dúvidas sobre o seguinte trecho de 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 trecho de código apresenta um erro na linha 3 emc++ mas não emc?

eu seiarray1 é realmente umint earray2 earray3 são matrizes, então por que umc compilador mostra um erro, mas apenas um aviso: "excesso de elementos na inicialização escalar"

Existe um uso dessa definição e por que ela é válida emc?

questionAnswers(7)

yourAnswerToTheQuestion