小甲鱼老师视频里面的一道题,做出来了但是有个小地方不明白!
本帖最后由 Anny黄 于 2015-6-26 23:44 编辑按着要求把代码写出来了,也实现了,但是照着上面视频抄下来的一个process中,那个f的参数为什么要个空括号,用处在哪,去掉后编译又不给过,这是为何?【该代码目的是实现:用户输入2个,值然后自动进行比较大小以及求和。要求用到指向函数的指针】直接上代码,求解惑#include<stdio.h>
void main()
{
int max(int ,int );
int min(int ,int );
int add(int ,int );
void process(int x,int y,int(*f)());
int a,b;
printf("请输入数字\n");
scanf("%d %d",&a,&b);
printf("\n");
printf("max =");
process(a,b,max);
printf("\n");
printf("min =");
process(a,b,min);
printf("\n");
printf("add =");
process(a,b,add);
printf("\n");
}
int max(int a,int b )
{
int c;
if(a<b)
{
c=b;
}
else
{
c=a;
}
return c;
}
void process(int x,int y,int(*f)())
{
int a;
a=f(x,y);
printf("%d",a);
}
int min(int a,int b)
{
int c;
if(a<b)
{
c=a;
}
else
{
c=b;
}
return(c);
}
int add(int a,int b )
{
a+=b;
return(a);
}
Anny黄 发表于 2015-6-29 00:15
int (*f)()后面带个空括号是表明这个参数是函数吗!
1. int (*f)()后面带个括号,说明f这个指针指向的是函数
2. 后面带个空括号,说明这个函数没有输入参数 本帖最后由 仰望天上的光 于 2015-6-26 23:55 编辑
f---定义f
*f---f是指针
(*f)()---f这个指针指向一个函数,该函数不带参数。为什么不写成*f()呢?因为这样写f会先和()结合,说明定义的是一个函数,而函数的返回值是指针
in(*f)(),f这个指针指向一个函数,该函数不带参数,且返回类型是int #include<stdio.h>
void main()
{
int max(int, int);
int min(int, int);
int add(int, int);
void process(int x, int y, int(*f)(int, int)); //定义函数指针 需要与函数的参数和返回值一样
int a, b;
printf("请输入数字\n");
scanf("%d %d", &a, &b);
printf("\n");
printf("max =");
process(a, b, max);
printf("\n");
printf("min =");
process(a, b, min);
printf("\n");
printf("add =");
process(a, b, add);
printf("\n");
}
int max(int a, int b)
{
int c;
if (a<b)
{
c = b;
}
else
{
c = a;
}
return c;
}
void process(int x, int y, int(*f)(int,int))//这里也是一样的
{
int a;
a = f(x, y);
printf("%d", a);
}
int min(int a, int b)
{
int c;
if (a<b)
{
c = a;
}
else
{
c = b;
}
return(c);
}
int add(int a, int b)
{
a += b;
return(a);
}
{:9_240:} 正如楼上说的一样,我贴上代码给你看 小人 发表于 2015-6-27 08:51
正如楼上说的一样,我贴上代码给你看
虽然还不明白in(*f)()后面带的那个空括号的意思是什么。不过辛苦你拉!{:9_240:} 仰望天上的光 发表于 2015-6-26 23:53
f---定义f
*f---f是指针
(*f)()---f这个指针指向一个函数,该函数不带参数。为什么不写成*f()呢?因为这 ...
int (*f)()后面带个空括号是表明这个参数是函数吗! 指针函数,表明这个指针指的是函数。 仰望天上的光 发表于 2015-6-26 23:53
f---定义f
*f---f是指针
(*f)()---f这个指针指向一个函数,该函数不带参数。为什么不写成*f()呢?因为这 ...
#include<stdio.h>
int max(int ,int );
int min(int ,int );
int add(int ,int );
function(int ,int ,int fun());
void main()
{
int a,b;
printf("enter a and b:");
scanf("%d %d",&a,&b);
printf("max =");
function(a,b,max);
printf("min = ");
function(a,b,min);
printf("add = ");
function(a,b,add);
}
int max(int x,int y )
{
int z;
if(x > y)
{
z = x;
}
else
{
z = y;
}
return z;
}
int min(int x,int y )
{
int z;
if(x > y)
{
z = y;
}
else
{
z = x;
}
return z;
}
int add(int x ,int y)
{
int z;
z = x + y;
return z;
}
function(int x,int y,int fun())
{
int a;
a = fun(x,y);
printf("%d",a);
}
为什么我这样也可以定义那个指针函数呢,结果也是对的呢,那个int (*f)()为什么不直接写成函数f()呢, 貌似就是无参数的函数指针吧 C:\Users\Administrator\CLionProjects\67swappointer\cmake-build-debug\67swappointer.exe
Enter a and b:2 3
max=d
min=d
add=d
进程已结束,退出代码 0 为什么输出是这
页:
[1]