[Error] invalid conversion from 'int' to 'int (*)[4]' [-fpermissive]

代码瑕疵望理解
报错显示:[Error] invalid conversion from 'int' to 'int (*)[4]' [-fpermissive]
Windows11,使用c++dev5.11编译器
感谢指点
报错句已用注释标出


#include
#define STUDENT 3
#define EXAMS 4
void printArray(int grades[][EXAMS], int pupils, int tests);
void minimum(int grades[][EXAMS], int pupils, int tests);
void maximum(int grades[][EXAMS], int pupils, int tests);
void average(int grades[][EXAMS], int pupils, int tests);

int main()
{   int  studentGrades[STUDENT][EXAMS]=
        {{77,68,86,73},
         {96,87,89,78},
         {70,90,86,81}}; 

    int choice=0;
    
    void (*processGrades[4])( int grades[][EXAMS], int pupils, int tests) = {printArray,minimum,maximum,average};
    puts("Enter a choice:");
    puts("  0  Print the array of grades");
    puts("  1  Find the minimum grade");
    puts("  2  Find the maximum grade");
    puts("  3  Print the average on all tests for each student");
    puts("  4  End program");
    
    printf("please enter your choice:");
    scanf("%d",&choice);
//下句报错
//下句报错
//下句报错
(*processGrades[choice])(studentGrades[STUDENT][EXAMS],STUDENT,EXAMS);//此句报错

}

void printArray(int grades[][EXAMS], int pupils, int tests)     
{printf("%s","                 [0] [1] [2] [3]");
 for(int i = 0;i < pupils; i++){
     printf("\nstdentGrades[%d]", i);
     for(int j = 0;j < tests;j++){
         printf("%-5d",grades[i][j]);
     }
 }
}
void minimum(int grades[][EXAMS], int pupils, int tests)   
{int lowGrade = 100;
for(int i = 0;i < pupils;++i){
    for(int j = 0;j < tests;++j){
        if(grades[i][j] < lowGrade){
            lowGrade = grades[i][j];
        }
    }
}
printf("\nLowset grade: %d",lowGrade);
}
void maximum(int grades[][EXAMS], int pupils, int tests)
{int highGrade = 0;
for(int i = 0;i < pupils;++i){
    for(int j = 0;j < tests;++j){
        if(grades[i][j] > highGrade){
            highGrade = grades[i][j];
        }
    }
}
printf("\nHighest grade: %d",highGrade);
}
void avrage(int grades[][EXAMS], int pupils, int tests) 
{for(int i = 0;i < pupils;++i){
    int total = 0;
    for(int j = 0;j < tests;++j){
        total += grades[i][j];
    }
    printf("The average grade for student %d is %.2f\n",i,total/EXAMS);
}
}

studentGrades[STUDENT][EXAMS]改成studentGrades

(studentGrades[STUDENT][EXAMS],STUDENT,EXAMS)
这是什么呀,是个逗号表达式啊,你是不是想写个函数调用,但是忘记写函数,只写了个括号
void (*processGrades[4])( int grades[][EXAMS], int pupils, int tests)
你这函数声明就有问题啊,函数名呢,函数没名字吗