C 使用指针调用函数的问题

C trouble with function calling with pointers

我正在使用结构数组来保存有关特定人员的数据,并且有 2 个函数可以写出数据。第三个函数(Wypisz)使用指针来使用指定的一个。问题是当我尝试编译它时,此函数在 'if clauses':

中均发生错误

错误:'struct'

之前的预期表达式
struct Osoba
{    char imie[MAX], nazwisko[MAX];
    int rokurodzenia[N];
};

void WypiszWLinii(struct Osoba osoba[])
{    int i;
    for(i=0;i<N;i++)
{
    printf("%c %c, %d\n", osoba[i].imie, osoba[i].nazwisko, osoba[i].rokurodzenia);
}
}
void WypiszJedenPoDrugim(struct Osoba osoba[])
{
int i;
for(i=0;i<N;i++)
{
    printf("%c\n%c\n%d\n", osoba[i].imie, osoba[i].nazwisko,    osoba[i].rokurodzenia);
}
}
void Wypisz(void (*wskfun)(struct Osoba), int i)
{
    if(i=1)
{
    wskfun=WypiszJedenPoDrugim(struct Osoba osoba[]);
}
else if(i=0)
{
    wskfun=WypiszWLinii(struct Osoboa osoba[]);
}
else
{
    printf("Wybrano zla opcje w menu\n");
    return -1;
}
}

N 和 MAX 是包含库的预定义变量

您在 Wypisz 函数实现中遇到的问题是将指向函数的指针赋值给了错误的值。 而不是:

wskfun=WypiszJedenPoDrugim(struct Osoba osoba[]);

wskfun=WypiszWLinii(struct Osoba osoba[]);

您必须获取指向该函数的指针并将其赋值给变量:

wskfun = &WypiszJedenPoDrugim;

wskfun = &WypiszWLinii;

之后,您可以使用指向函数的指针,例如:

wskfun("pointer to struct array");

也就是说,要解决您的问题,必须将函数更改为:

void Wypisz(void(*wskfun)(struct Osoba[]), int i)
{
    if (i = 1)
    {
        wskfun = &WypiszJedenPoDrugim;
    }
    else if (i = 0)
    {
        wskfun = &WypiszWLinii;
    }
    else
    {
        printf("Wybrano zla opcje w menu\n");
        return -1;
    }
}