Ошибка в инициализации массива указателей на функции - C (СИ)

Формулировка задачи:

Как правильно инициализировать массив указателей на функции? Компилятор указывает ошибку в этой строчке после знака равно
void (*processGrades[4]) (int(*)[4], int, int) = (f0, f1, f2, f3);
#include <stdio.h>
#define STUDENTS 3
#define EXAMS 4
 
void f0 (const int [][EXAMS], int, int);
void f1 (const int [][EXAMS], int, int);
void f2 (const int [][EXAMS], int, int);
void f3 (const int [][EXAMS], int, int);
 
int main ()
{ 
    int a;
    void (*processGrades[4]) (int(*)[4], int, int) = (f0, f1, f2, f3);
    int studentsGrades [STUDENTS] [EXAMS] = {{77, 68, 86, 73},
                                             {96, 87, 89, 78},
                                             {70, 90, 86, 81}};
 
    printf ("\n0 - massiv ocenok\n1 - min ocenka\n2 - max ocenka\n3 - sredny ocenka po vsem testam dly kagdogo studenta\n4 - viti iz programmi\n");
    scanf ("%d", &a);
 
    while (a >= 0 && a < 4)
    {
        (*processGrades[a])(studentsGrades, STUDENTS, EXAMS);
         printf ("\n0 - massiv ocenok\n1 - min ocenka\n2 - max ocenka\n3 - sredny ocenka po vsem testam dly kagdogo studenta\n4 - viti iz programmi\n");
         scanf ("%d", &a);
    }
    printf ("You entered 4 to end\n");
    return 0;
}
 
/* Выводит массив оценок */
void f0 (const int grades [][EXAMS], int peoplse, int tests)
{
 int i, j;
 printf ("                [0]  [1]  [2]  [3]");
 
 for (i = 0; i <= peoplse - 1; i++)
 {
    printf ("\nstudentGrades[%d] ", i);
 
    for (j = 0; j <= tests - 1; j++)
        printf("%-5d", grades[i][j]);
 }
}
/* Выводит минимальную оценку */
void f1 (const int grades [][EXAMS], int peoplse, int tests)
{
    int i, j, lowGrade = 100;
    for (i = 0; i <= peoplse - 1; i++)
        for (j = 0; j <= tests -1; j++)
            if (grades[i][j] < lowGrade)
                lowGrade = grades[i][j];
            printf("Lowest grade: %d\n", lowGrade);
}
/* Выводит максимальную оценку */
void f2 (const int grades [][EXAMS], int peoplse, int tests)
{
    int i, j, highGrade = 0;
    for (i = 0; i <= peoplse - 1; i++)
        for (j = 0; j <= tests -1; j++)
            if (grades[i][j] < highGrade)
                highGrade = grades[i][j];
            printf("Highest grade: %d\n", highGrade);
}
/* Выводит среднюю оценку для каждого студента */
void f3 (const int grades [][EXAMS], int peoplse, int tests)
{
    int j, i, total = 0;
    for (j = 0; j <= peoplse - 1; j++)
    {
        for (i = 0; i <= tests - 1; i++)
            total += grades [j][i];
        printf ("The average grade for students %d is %d\n", i, total);
        total = 0;
    }
}

Код к задаче: «Ошибка в инициализации массива указателей на функции - C (СИ)»

textual
    void (*processGrades[]) (const int[][EXAMS], int, int) = {f0, f1, f2, f3};
    const int studentsGrades [STUDENTS] [EXAMS] = {{77, 68, 86, 73},
                                             {96, 87, 89, 78},
                                             {70, 90, 86, 81}};

13   голосов, оценка 4.077 из 5


СОХРАНИТЬ ССЫЛКУ