函数指针作为参数问题
#include<stdio.h>void main()
{int fun(int a,int b,int (*p)(int,int));
int max(int a,int b);
int min(int a,int b);
int (*p)(int,int);
int a=54,b=1351,c=2;
if(1==c)
{
fun(a,b,max);
}
else if (c==2)
{
fun(a,b,min);
}
}
int max(int a,int b)
{
int max,c;
if(a>b)
{
max=a;
}
else max=b;
return max;
}
int min(int a,int b)
{
int min,c;
if(a>b)
{
min=b;
}
else min=b;
return min;
}
int fun(int a,int b,int (*p)(int,int))
{int result;
result=(*p)(a,b);
printf("%d\n",result);
return 0;
}
语法没问题,但是输出 怎么样都是1351,请问哪里有问题 本帖最后由 jackz007 于 2019-3-15 21:02 编辑
int min(int a , int b)
{
int min , c ;
if(a > b) min = b ;
else min = b ; // 错误点
return min ;
}
简化了一下代码,运算结果正确,楼主可以参考:
#include <stdio.h>
max(int a , int b)
{
return a > b ? a : b ;
}
min(int a , int b)
{
return a > b ? b : a ;
}
fun(int a , int b , int (* p)(int , int))
{
return((* p)(a , b)) ;
}
main(void)
{
int a = 54 , b = 1351 ;
printf("max = %d\n" , fun(a , b , max)) ;
printf("min = %d\n" , fun(a , b , min)) ;
}
jackz007 发表于 2019-3-15 20:56
简化了一下代码,运算结果正确,楼主可以参考:
恩恩,可是 我还是不清楚我的代码哪里出问题了,能帮着看看吗? cycf 发表于 2019-3-15 21:01
恩恩,可是 我还是不清楚我的代码哪里出问题了,能帮着看看吗?
已经指出了问题,请继续参考我修改过的帖子。 jackz007 发表于 2019-3-15 21:03
已经指出了问题,请继续参考我修改过的帖子。
明白了 我有一个赋值出现了问题,谢谢你
页:
[1]