salve

mi si richiede di creare una funzione con prototipo:

int funzione (struct mail **elenco, int *num);

che deve:
1) riempire il vettore "elenco" che gli viene passato,
2) allocare questo vettore, e riempirlo di elementi "mail",
3) ritornare il numero di elementi, tramite il puntatore a "num".

inoltre nella funzione chiamante, devo:
4) iterare sul vettore per stampare gli elementi che lo compongono.

aggiungo inoltre che non posso aggiungere alla struct "mail" dei puntatori al prossimo o precedente elemento, ogni "mail" è quindi scollegata dall'altra

il punto (3) è stato facile, gli invece non mi sono chiari:
ottengo continui segfault non appena tento di accedere o allocare elementi di "elenco", molto probabilmente perchè non uso la sintassi corretta.

in dettaglio vorrei capire come devo dichiarare il vettore e poi passarlo alla funzione.
questo è giusto?
codice:
struct mail *elenco;
funzione(&elenco);
e poi come devo accedere ad elenco ed ai suoi membri all'interno della funzione?

grazie a tutti