int add(int, int);
int sub(int, int);
int calc(int(*fp)(int, int), int , int );//函数指针作为函数参数(int(*fp)(int,int))int,int为函数指针的参数
int(*select(char op))(int,int);//select首先是一个函数,有一个char类型的参数,返回值是整形并且带有两个整形参数的函数指针
int add(int x1, int x2)
{
return x1 + x2;
}
int sub(int x1, int x2)
{
return x1 - x2;
}
int calc(int(*fp)(int, int), int x1, int x2)
{
return (*fp)(x1,x2);//返回函数指针和它的参数
}
int(*select(char op))(int,int)//函数返回函数指针
{
switch (op)
{
case '+':return add;
case '-':return sub;
}
return 0;
}
int main()
{
int z1, z2;
char op;
int(*fp)(int, int);//定义函数指针
printf("请输入一个表达式:");
scanf_s("%d '%c' %d",&z1,op,&z2);
fp = select(op);
printf("%d %c %d=%d\n",z1,op,z2,calc(fp,z1,z2));
return 0;
}
没整明白错在哪里