hai un array di strutture. Ecco a cosa servono i puntatori. Questi dati sono contenuti in memoria(ram) e per accedere alle strutture lo fai con i puntatori. La funzione:

struct per * cerPer(char *,char *, int); /* Capita la funzione, perchè mette *? */

ritorna un puntatore a una struttura, in questo modo non si duplicano i dati, e la funzione che richiama cerPer avrà un puntatore a una struttura. Cmq ricordati che c'è analogia stretta fra array e puntatori