Creo que deberias revisar tus apuntes, las secciones de declaracion de variables, punteros a variables y argumentos de funciones.
Basicamente tienes lo siguiente:
Definicion de una estructura:
Código C:
Ver originalstruct MATRICULA {
int dato;
};
typedef struct MATRICULA MATRICULA;
/*equivale a
typedef struct {
int dato;
} MATRICULA;*/
Declaracion de variable:
Declaracion de puntero nulo:
Declaracion de puntero a variable:
Código C:
Ver originalMATRICULA matricula, *lpmatricula;
lpmatricula = &matricula;
Prototipo de funcion con argumento de tipo puntero a variable, y llamada a esa funcion:
Código C:
Ver originalvoid funcion(MATRICULA *);
funcion(&matricula);//referenciando una variable
funcion(lpmatricula);//enviando un puntero a variable
Acceso a un elemento de una estructura y de un puntero a estructura:
Código C:
Ver originalmatricula.dato = 123;
lpmatricula->dato = 456;
Declarar una variable, enviarla como referencia a una funcion y modificarla desde la funcion:
Código C:
Ver originaltypedef struct {
int dato;
} MATRICULA;
void funcion(MATRICULA *lpmatricula) {
lpmatricula->dato = 100;
}
int main() {
MATRICULA matricula;
matricula.dato = 0;
funcion(&matricula);
return 0;
}
Revisa todo esto, para resolver el ejercicio tienes que tener claros todos estos conceptos. Si no es asi te sugiero que eches un vistazo en profundidad a algun manual de C (lo que he puesto yo es muy por envcima).
De todas formas esto no resuelve lo de la lista de estructuras. En tu caso dado que la funcion carga la lista de matriculas tambien deberia de encargarse de llamar a las funciones que reserven la memoria necesaria para todas las matriculas. Te sugiero que eches un vistazo a algo de listas enlazadas simples y memoria dinamica. En este mismo foro ha aparecido muchas veces el tema.
Saludos
vosk