调用指针函数 这两个空不知道错哪了

img

代码: #include <stdio.h> int main() {
int fun1(int,int),fun2(int,int),fun3(int,int),fun4(int,int); int executefun( int (*func)(int a,int b),int a,int b ); int x,y,i; int (*funcarr[4])(int a,int b); funcarr[0]=fun1; funcarr[1]=fun2; funcarr[2]=fun3; funcarr[3]=fun4; scanf("%d",&i); if(i>=0&&i<=3) { scanf("%d%d",&x,&y); if(i==3 && y==0) printf("no result.\n"); else printf("%d\n",executefun( (*func)(a,b),a,b )); }else { printf("exit\n"); } return 0; }

int fun1(int x,int y) { printf("%d+%d=",x,y); return x+y; } int fun2(int x,int y) { printf("%d-%d=",x,y); return x-y; } int fun3(int x,int y) { printf("%d*%d=",x,y); return x*y; } int fun4(int x,int y) { printf("%d/%d=",x,y); return x/y; } int executefun(int (*func)(int a,int b),int a,int b) {
int s=(*func)(a,b); return(s); }

第一个空是对的,第二个空应该写 printf("%d\n", executefun(funcarr[i], x, y)); 因为这个是个回调函数,你要传进去的是函数的指针,还有刚刚输入的x,y的值