Wie übergeben Sie ein Array von Zeigern an Funktionen als Argument für eine Funktion? Wenn die Typen der Funktionen leer sind und auch der Zeiger, wie greifen Sie auf die Funktionen zu?Arrays und Funktionszeiger
int main() {
void(*fun_ptr[])(void) = {fun1, fun2, fun3};
pickFun(fun_ptr);
return 0;
}
Alle drei Funktionen drucken nur eine Nachricht und werden als ungültig erklärt
void pickFun(void *function_ptr[])
{
int pick = 0;
while(pick != 0)
{
scanf("%i", &pick);
*(function_ptr + (pick - 1));
}
}
ich nie die Funktion des printf-Anweisungen erhalten kann erscheinen, wenn eine Funktion gewählt wird. Das Programm führt nur eine Schleife durch und gibt niemals die Nachricht aus, die in jeder Funktion enthalten ist. Irgendwelche Vorschläge oder Hinweise?
Zuerst, wenn Sie ein Array verwenden Array-Indizierung Syntax, wie z. 'function_ptr [pick - 1]' stattdessen macht es viel klarer, was Sie tun. Zweitens rufen Sie nicht wirklich die Funktionen auf. –
Oh, und drittens, denken Sie noch einmal an Ihre Schleifenbedingung ... –
'int pick = 0; while (pick! = 0) {... 'Hier while while loop bekommt nie eine Chance. –