ciao a tutti, devo risolvere il seguente problema:

ho una struttura dati costituita da un vettore, che chiamerò archivio, e che ha dimensione n (il numero n viene scelto dall'utente all'inizio del programma). Il vettore è allocato dinamicamente dopo aver chiesto all'utente il valore n.
Adesso devo creare una funzione che allochi il vettore archivio, dato il numero n.

la struct è questa:
codice:
typedef struct { 
              unsigned int posti_disponibili; 
              list posti_acquistati; //è una lista
              list posti_prenotati; // è una lista 
}archivio;
archivio *archivio_voli;
nell'esempio già svolto questa funzione è scritta così:
codice:
void AllocaVettore(archivio **x, unsigned int n){
     *x=(archivio *)malloc(n*sizeof(archivio));
}
qualcuno mi aiuta a capire perchè gli passa il doppio puntatore?