Buongiorno volevo chiedervi se posso riempire un array in questa maniera.

codice:
int main()
{
    int array[];
    int elem, i, cont=0, n=7;

    for(i=0;i<n;i++)
    {
        printf("\nInserisci l'elemento nell'array");
        scanf("%d", &elem);

        cont=addArray(array, cont, elem);
    }
    
    return 0;
}

int addArray(int array[],int cont, int elem)
{
    array[cont]=elem;
    return cont+1;
}
Secondo voi si può fare o devo usare la malloc?
Potente spiegarmi bene il funzionamento del array senza che io ne dichiari l'ampiezza?