|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include<stdio.h>
int add(int,int);
int sub(int,int);
int calc(int(*fp)(int,int),int,int);
int select(*select(char))(int,int); //有问题
int add(int num1,int num2)
{
return num1+num2;
}
int sub(int num1,int num2)
{
return num1-num2;
}
int calc(int(*fp)(int,int),int num1,int num2)
{
return(*fp)(num1,num2);
}
int select(*select(char op))(int,int)
{
switch(op)
{
case'+':return add;
case'-':return sub;
}
}
int main()
{
int num1,num2;
char op;
int (*fp)(int,int);
printf("请输入一个式子:");
scanf("%d%c%d",&num1,&op,&num2);
fp=select(op);
printf("%d%c%d=%d\n",num1,op,num2,calc(fp,num1,num2));
return 0;
}
这段代码显示6 12 [Error] expected declaration specifiers or '...' before '*' token
请问是哪里错了,谢谢
这是因为函数声明中的返回值类型没有正确指定。在函数声明中,应该使用`int (*select(char))(int, int)`表示返回一个指向函数的指针。
我修改了你的代码并修复了这个错误,请参考下面的代码:
#include <stdio.h>
int add(int, int);
int sub(int, int);
int calc(int (*)(int, int), int, int);
int (*select(char))(int, int);
int add(int num1, int num2)
{
return num1 + num2;
}
int sub(int num1, int num2)
{
return num1 - num2;
}
int calc(int (*fp)(int, int), int num1, int num2)
{
return (*fp)(num1, num2);
}
int (*select(char op))(int, int)
{
switch (op)
{
case '+':
return add;
case '-':
return sub;
}
}
int main()
{
int num1, num2;
char op;
int (*fp)(int, int);
printf("请输入一个式子:");
scanf("%d%c%d", &num1, &op, &num2);
fp = select(op);
printf("%d%c%d=%d\n", num1, op, num2, calc(fp, num1, num2));
return 0;
}
希望可以帮助到你!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
|
|