c语言指针做函数实参问题求解

醉倒花街 2019-08-20 01:00:03
以下是我的代码 #include<stdio.h> int main() { int max(int x,int y); int min(int x,int y); int add(int x,int y); void process(int x,int y, int (*fun)() ); int a,b; printf("Please input a and b:\n"); scanf("&d &d",&a,&b); printf("max="); process(a,b,max); printf("min="); process(a,b,min); printf("sum="); process(a,b,add); return 0; } void process(int x,int y,int (*fun)()) { int value; value=(*fun)(x,y); printf("%d\n",value); } int max(int x,int y) { int max; if(x>y) { return x; } else { return y; } } int min(int x,int y) { int min; if(x<y) { return x; } else { return y; } } int add(int x,int y) { return (x+y); } 为何运行之后结果是随机结果鸭,大佬们帮帮忙
...全文
94 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2019-08-20
  • 打赏
  • 举报
回复
printf里面的%和变量的一一对应关系 scanf里面的%和变量以及变量前加不加&的一一对应关系 是C代码中非常容易出错的地方,而且通常编译还不出错。 所以在编译源代码之前值得专门仔细检查一遍甚至多遍。 关于自己是否适合编程的很简单的测试: 在报纸或杂志上随便找一段约1000字的文章,在Word中输入一遍。输完后再参考下面答案: A里面有10处以上文字或标点错误 B里面没有文字或标点错误并敢为此跟人打赌 C里面没有文字或标点错误并且字体和排版完全与原稿一致 D打印在半透明的纸上和原稿重叠在一起检查一模一样,且自我感觉很有成就感 A不适合编程(理由:打字准确度偏低、粗心大意) B初级程序员(理由:打字准确度很高、认真细致、自信、理解全角半角概念) C高级程序员(理由:在B的基础上理解字体和排版也是电脑打印的重要因素、但相比D还不够偏执、精益求精、结果可验证) D软件项目经理(理由:能针对项目给出令人信服的细致到极点的需求说明和典型测试用例。用户几乎挑不出毛病。专业!) 如果想从A变成B的话,到我的资源http://download.csdn.net/detail/zhao4zhong1/4084259里面下载“适合程序员的键盘练习”
自信男孩 2019-08-20
  • 打赏
  • 举报
回复
#include<stdio.h>

int max(int x,int y);
int min(int x,int y);
int add(int x,int y);
void process(int x,int y, int (*fun)(int, int));
int main()
{


int a,b;

printf("Please input a and b:\n");
scanf("%d %d",&a,&b);

printf("max=");
process(a,b,max);

printf("min=");
process(a,b,min);

printf("sum=");
process(a,b,add);
return 0;
}

void process(int x,int y,int (*fun)(int, int))
{
int value;
//value =(*fun)(x,y);
value = fun(x,y);
printf("%d\n",value);
}

int max(int x,int y)
{
int max;
if(x>y)
{
return x;
}
else
{
return y;
}

}

int min(int x,int y)
{
int min;
if(x<y)
{
return x;
}
else
{
return y;
}
}

int add(int x,int y)
{
return (x+y);
}

供参考~

函数指针变量需要确定参数个数和类型~
E_stream 2019-08-20
  • 打赏
  • 举报
回复
引用 2 楼 赵4老师 的回复:
printf里面的%和变量的一一对应关系 scanf里面的%和变量以及变量前加不加&的一一对应关系 是C代码中非常容易出错的地方,而且通常编译还不出错。 所以在编译源代码之前值得专门仔细检查一遍甚至多遍。 关于自己是否适合编程的很简单的测试: 在报纸或杂志上随便找一段约1000字的文章,在Word中输入一遍。输完后再参考下面答案: A里面有10处以上文字或标点错误 B里面没有文字或标点错误并敢为此跟人打赌 C里面没有文字或标点错误并且字体和排版完全与原稿一致 D打印在半透明的纸上和原稿重叠在一起检查一模一样,且自我感觉很有成就感 A不适合编程(理由:打字准确度偏低、粗心大意) B初级程序员(理由:打字准确度很高、认真细致、自信、理解全角半角概念) C高级程序员(理由:在B的基础上理解字体和排版也是电脑打印的重要因素、但相比D还不够偏执、精益求精、结果可验证) D软件项目经理(理由:能针对项目给出令人信服的细致到极点的需求说明和典型测试用例。用户几乎挑不出毛病。专业!) 如果想从A变成B的话,到我的资源http://download.csdn.net/detail/zhao4zhong1/4084259里面下载“适合程序员的键盘练习”
这个有时间限制吗🚫
E_stream 2019-08-20
  • 打赏
  • 举报
回复
引用 1 楼 qq_36835025 的回复:
对不起,自己粗心scanf里面打错了符号,刚检查出来
那问题解决了吗? 指向函数的指针不是: int (*p)()= & fun;//fun是函数名,要加取地址符吗?
醉倒花街 2019-08-20
  • 打赏
  • 举报
回复
对不起,自己粗心scanf里面打错了符号,刚检查出来

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧