新手求助大神函数指针的正确用法
#include <stdio.h>void main()
{
int Max(int,int);
int Min(int,int);
int Add(int,int);
void Process(int x,int y,int(*fun)(int,int));
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);
}
int Max(int x,int y)
{
int max;
max=x;
if(max<y)
{
max=y;
}
return max;
}
int Min(int x,int y)
{
int min;
min=x;
if(min>y)
{
min=y;
}
return min;
}
int Add(int x,int y)
{
int sum;
sum=x+y;
return sum;
} 求问这个程序到底哪里出了错,编译可以通过,运行却出现问题 题目描述清楚,出现什么问题,提交代码用恢复框的<>工具提交 没看到你的process函数的定义在哪里 #include <stdio.h>
int Max(int,int);
int Min(int,int);
int Add(int,int);
int Process(int *fun(int,int),int a,int b);
int Process(int *fun(int,int),int a,int b)
{
if(fun==Max)
{
return Max(a,b);
}
else if(fun==Min)
{
return Min(a,b);
}
else
{
return Add(a,b);
}
}
int Max(int x,int y)
{
int max;
max=x;
if(max<y)
{
max=y;
}
return max;
}
int Min(int x,int y)
{
int min;
min=x;
if(min>y)
{
min=y;
}
return min;
}
int Add(int x,int y)
{
int sum;
sum=x+y;
return sum;
}
void main()
{
int a,b;
printf("Please input a and b:\n");
scanf("%d%d",&a,&b);
printf("Max=%d\n",Process(Max,a,b));
printf("Min=%d\n",Process(Min,a,b));
printf("Sum=%d\n",Process(Add,a,b));
return;
}
这是用函数指针做参数,如果要用指针函数做参数,就得先声明指针函数,定义指针函数,不赞同这样的做法的,我也是新人
多想一想,试一试{:5_91:} orino 发表于 2018-1-29 13:16
题目描述清楚,出现什么问题,提交代码用恢复框的工具提交
unresolved external symbol "void __cdecl Process(int,int,int (__cdecl*)(int,int))" (?Process@@YAXHHP6AHHH@Z@Z) Process 函数的定义哪去了。。。 本帖最后由 musilintan 于 2018-1-29 19:29 编辑
int (*f) (int x); /*声明一个函数指针 */
f=func; /* 将func函数的首地址赋给指针f */
函数指针这样用:
1.定义函数指针
2.然后给函数指针赋值,指向一个函数。
3.然后可以使用函数指针直接代替指向函数。一般用来做回调函数用的。参数传递一个函数指针进去,然后执行完调用函数指针回调。
页:
[1]