标题:指向函数的指针——程序有错,但我实在是找不到,求帮指出来:
只看楼主
S140131022
Rank: 2
来 自:重庆邮电大学
等 级:论坛游民
帖 子:205
专家分:35
注 册:2014-10-9
结帖率:90.24%
 问题点数:0 回复次数:7 
指向函数的指针——程序有错,但我实在是找不到,求帮指出来:
#include<stdio.h>

void main()
{
int process(int,int,(*fun)(int,int));
int res(int x,int y);
int min(int x,int y);
int max(int x,int y);
int a,b,c;
printf("Input a,b is:");
scanf("%d,%d",&a,&b);
c=process(a,b,max);
printf("the max is:%d\n",c);
c=process(a,b,min);
printf("the min is:%d\n",c);
c=process(a,b,res);
printf("the res is:%d\n",c);
}

int res(int x,int y)
{
int z;
z=x+y;
return z;
}

int min(int x,int y)
{
int z;
z=(x>y)?y:x;
return z;
}

int max(int x,int y)
{
int z;
z=(x>y)?x:y;
return z;
}

int process(int x,int y,(*fun)(int x,int y))
{
int z;
z=(*fun)(x,y);
return z;
}
功能大概是有一个函数process。第一次调用实现求a,b最大值~第二次调用实现求a,b小值,第三次调用实现a,b之和~
搜索更多相关主题的帖子: process include return 
2014-10-13 18:16
wssy213
Rank: 12Rank: 12Rank: 12
来 自:湖南
等 级:贵宾
威 望:10
帖 子:967
专家分:3703
注 册:2014-6-6
得分:0 
#include<stdio.h>

void main()
{
int process(int,int,(*fun)(int,int));
int res(int x,int y);
int min(int x,int y);
int max(int x,int y);
int a,b,c;
printf("Input a,b is:");
scanf("%d,%d",&a,&b);
c=process(a,b,max);
printf("the max is:%d\n",c);
c=process(a,b,min);
printf("the min is:%d\n",c);
c=process(a,b,res);
printf("the res is:%d\n",c);
}

int res(int x,int y)
{
int z;
z=x+y;
return z;
}

int min(int x,int y)
{
int z;
z=(x>y)?y:x;
return z;
}

int max(int x,int y)
{
int z;
z=(x>y)?x:y;
return z;
}

int process(int x,int y,(*fun)(int x,int y))
{
int z;
z=(*fun)(x,y);
return z;
}

坚持----------------------------------唯一的道路
shit ! ! !
2014-10-13 18:39
hackrol
Rank: 4
来 自:世界和平组织
等 级:业余侠客
帖 子:62
专家分:267
注 册:2014-9-6
得分:0 
int process(int,int,(*fun)(int,int));
这句函数的指针类型不对,函数没有返回类型,改成这样
int process(int,int,int (*fun)(int,int));

下面的自己改下!
才上,才看到,来晚了!
2014-10-14 01:22
S140131022
Rank: 2
来 自:重庆邮电大学
等 级:论坛游民
帖 子:205
专家分:35
注 册:2014-10-9
得分:0 
回复 3 楼 hackrol
哦 ~ 只知道了~ 太感谢咯

既然还有不甘心
就还没到放弃的时候~
2014-10-14 09:37
S140131022
Rank: 2
来 自:重庆邮电大学
等 级:论坛游民
帖 子:205
专家分:35
注 册:2014-10-9
得分:0 
回复 3 楼 hackrol
如果没有返回值是不是就不需要INT~

既然还有不甘心
就还没到放弃的时候~
2014-10-14 09:38
S140131022
Rank: 2
来 自:重庆邮电大学
等 级:论坛游民
帖 子:205
专家分:35
注 册:2014-10-9
得分:0 
#include<stdio.h>
int z;
void main()
{
void process(int,int,int(*fun)(int,int));
int max(int,int);
int min(int,int);
int res(int,int);
int a,b,c;
printf("the a,b is:");
scanf("%d,%d",&a,&b);
printf("the max is:");
process(a,b,max);
printf("the min is:");
process(a,b,min);
printf("the res is:");
process(a,b,res);
}
int max(int x,int y)
{
z=x>y?x:y;
return z;
}
int min(int x,int y)
{
z=x>y?y:x;
return z;
}
int res(int x,int y)
{
z=x+y;
return z;
}
void process(int x,int y,int(*fun)(int x,int y))
{
  z=(*fun)(x,y);
  printf("%d\n",z);
}

无返回值类型的~

既然还有不甘心
就还没到放弃的时候~
2014-10-14 09:53
hackrol
Rank: 4
来 自:世界和平组织
等 级:业余侠客
帖 子:62
专家分:267
注 册:2014-9-6
得分:0 
回复 6 楼 S140131022
fun是分别代表 max,min,res函数的..不是说调用fun的po...函数...如果 max,min,res 函数返回值不一样,就不能分别调用他们.所以如果max,min,res函数返回值是
void ,这里也应该写上void (*fun)(int,int)
2014-10-14 10:10
BuilderZ
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:82
专家分:123
注 册:2014-9-22
得分:0 
额,你这不是指针
2014-10-15 11:04



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-437210-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019154 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved