Salve a tutti!
PREMESSA: la domanda che sto per farvi sembrerà a molti-me compreso- piuttosto stupida.

Sarà che è perché sono alle prime armi con il C, ma ancora non sono riuscito a capire l'utilità della funzione malloc.
Mi spiego:
per allocare memoria, la malloc ha bisogno di sapere "quanta" ne serve; glielo comunico, e lei mi restituisce un puntatore a quell'area di memoria; ma se io so "quanta" me ne serve, non posso direttamente dichiarare il numero preciso di variabili che mi occorrono?

Ad esempio:
-spesso e volentieri si prende in input il numero di strutture che occorrono (diciamo "n") ;
-si dichiara un puntatore a quella struttura;
-si assegna a quel puntatore l'indirizzo dell'area di memoria allocata :
codice:
ptr=malloc(n*sizeof(struct prova))
;
-la si utilizza.
Ma se io so quante strutture mi occorrono, non posso, ad esempio, dichiarare un array di n strutture?

Grazie per l'attenzione.