Nota media de alumnos con punteros en C

//Librería de scanf y printf
#include <stdio.h>
#include <stdlib.h>

//Función principal
int main()
{
 //Declaración de variables
 float *notasClase, mediaAlumno=0, mediaTotal=0;
 int i,j,numalumnos, numexamenes;
 
 //Leemos cuántos alumnos y cuántos exámenes
 printf("Introduzca el número de alumnos: ");
 scanf("%d", &numalumnos);
 printf("Introduzca el número de exámenes: ");
 scanf("%d", &numexamenes);
 
 //Reservamos espacio
 notasClase=(float*)malloc(sizeof(float)*numalumnos*numexamenes);
 
 //Leemos las notas
 printf("\n Introduzca las notas de la clase:\n");
 
 for (i=0; i<numalumnos; i++) {
  for (j=0; j<numexamenes; j++) {
   printf("\nIntroduzca la nota %d del alumno %d: ", j+1, i+1 );
   scanf("%f",notasClase+i*numexamenes+j);
  }

 }
 
 //Calculamos las medias de cada alumno y la total de la asignatura
 mediaTotal=0;
      
 for (i=0; i<numalumnos; i++) {
  mediaAlumno=0;
  for (j=0; j<numexamenes; j++) {
   mediaAlumno+=*(notasClase+i*numexamenes+j);
  }
  mediaTotal+=mediaAlumno;
  mediaAlumno/=numexamenes;
  printf("\nLa media del alumno %d es %f", i, mediaAlumno);
 }     
 mediaTotal/=numalumnos*numexamenes;     
 printf("\nLa media total es %f", mediaTotal);  
 
 free(notasClase);
 //Fin del main
 return 0;

}