| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1304 人关注过本帖
标题:求助函数指针作为函数参数的问题。
只看楼主 加入收藏
peter张
Rank: 2
等 级:论坛游民
威 望:1
帖 子:56
专家分:98
注 册:2017-3-7
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:6 
求助函数指针作为函数参数的问题。
程序代码:
#include <stdio.h>

int main(void)
{
    
    int max(int, int);
    int min(int, int);
    
    int process(int x, int y, int (*p)());
    
    int a;
    int b;

    printf("请输入两个数据:\n");
    scanf("%d %d", &a, &b);
    
    
    process (a,b,max);
    printf("max = %d",max);

    return 0;

}

int process(int x, int y,int f())
{
    return  f(x,y);
}


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 = x;
    }
    else 
    {
        z = y;
    }

    return z;
}

图片附件: 游客没有浏览图片的权限,请 登录注册


[此贴子已经被作者于2017-3-31 21:30编辑过]

2017-03-31 20:56
Alien_Lee
Rank: 8Rank: 8
来 自:Linux帝国
等 级:蝙蝠侠
威 望:7
帖 子:149
专家分:739
注 册:2016-7-19
收藏
得分:0 
1.你的程序的目的不明确
2.你的main函数的printf没有意义。你想打印什么呢?max?一个函数指针?如果想打印max函数的值请:printf("max=%d\n",max(a,b));
3.你的process子程序声明与定义虽然看似相同,其实是有略微差别的。
4.process中的f参数有什么用?整个函数就没有使用这个参数。
5.sum函数体在什么地方
6.process的返回值呢?
综述:如此低级的问题建议先查看书籍教材后在来提问。

  DEBUG的过程就是进步的过程,每一个小错误都是大问题!...
2017-03-31 21:17
peter张
Rank: 2
等 级:论坛游民
威 望:1
帖 子:56
专家分:98
注 册:2017-3-7
收藏
得分:0 
回复 2楼 Alien_Lee
刚开始学习,请指教。
目的是通过函数指针作为函数的参数来调用其他函数比较两个数据的大小。
2017-03-31 21:23
peter张
Rank: 2
等 级:论坛游民
威 望:1
帖 子:56
专家分:98
注 册:2017-3-7
收藏
得分:0 
修改后的代码:

程序代码:
#include <stdio.h>

int main(void)
{
    
    int max(int, int);
    int min(int, int);
    int sum(int, int);
    
    
    void process(int x, int y, int (*p)());
    
    int a;
    int b;

    printf("请输入两个数据:\n");
    scanf("%d %d", &a, &b);
    
    printf("max = ");
    process (a,b,max);
    
    printf("min = ");
    process (a,b,min);

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

    return 0;

}

void process(int x, int y,int f())
{
     printf("%d",f(x,y));


}


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 = x;
    }
    else 
    {
        z = y;
    }

    return z;
}

int sum(int x, int y)
{
    int z;

    z = x + y;

    return z;
}
2017-03-31 21:34
烟雨晨曦
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:7
帖 子:150
专家分:599
注 册:2017-3-5
收藏
得分:10 
回复 3楼 peter张
程序代码:
#include <stdio.h>
#define MAX(x,y) ((x)>(y)?(x):(y))
#define MIN(x,y) ((x)>(y)?(y):(x))

typedef int(* pFunc)(int, int);
int process(int x, int y, pFunc);
int max(int, int);
int min(int, int);
int main(void)
{
    int a = 0;
    int b = 0;
    printf("请输入两个数据:\n");
    scanf("%d %d", &a, &b);
    printf("max = %d\n",process (a,b,max));
    printf("min = %d\n",process (a,b,min));
    return 0;
}

int process(int x, int y, pFunc f)
{
     return  f(x,y);
}

int max(int x, int y)
{   
     return MAX(x,y);
}


int min(int x, int y)
{
    return MIN(x,y);
}
2017-03-31 21:35
peter张
Rank: 2
等 级:论坛游民
威 望:1
帖 子:56
专家分:98
注 册:2017-3-7
收藏
得分:0 
回复 2楼 Alien_Lee
你的process子程序声明与定义虽然看似相同,其实是有略微差别的--请教下,这有什么差别?
2017-03-31 21:38
peter张
Rank: 2
等 级:论坛游民
威 望:1
帖 子:56
专家分:98
注 册:2017-3-7
收藏
得分:0 
回复 5楼 烟雨晨曦

函数指针是这样用的。
赞一个。
2017-03-31 21:41
快速回复:求助函数指针作为函数参数的问题。
数据加载中...
 
   



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

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