| 网站首页 | 业界新闻 | 群组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 编程论坛
共有 130 人关注过本帖
标题:指向函数的指针做函数参数
只看楼主 加入收藏
龙岩花界
Rank: 2
等 级:论坛游民
帖 子:34
专家分:27
注 册:2018-10-18
结帖率:37.5%
  已结贴   问题点数:10  回复次数:6   
指向函数的指针做函数参数
#include<stdio.h>
int main()
{
    int fun(int x,int y,int(*p)(int,int));
    int max(int,int);
    int min(int,int);
    int add(int,int);//函数声明
    int a=34,b=-21,n;
    printf("please choose 1,2 or 3");
    scanf("%d",&n);
    if(n==1)  fun(a,b,max);
    if(n==2)  fun(a,b,min);
    if(n==3)  fun(a,b,add);//函数调用
    return 0;
}
int fun(int x,int y,int (*p)(int ,int))
{
    int result;
    result=(*p)(x,y);
    printf("%d\n",result);
}
int max(int x,int y)
{
    int z;
    if(x>y) z=x;
    else z=y;
    printf("max=");
    return (z);//返回两者中较大者
}
int min(int x,int y)
{
    int z;
    if(x<y) z=x;
    else z=y;
    printf("max=");
    return (z);//返回两者中较小者
}
int add(int x,int y)
{
    int z;
    z=x+y;
    printf("add=");
    return (z);//返回两者之和
}
教科书上的代码,理解性的照着打了一遍,问什么有错?
2018-12-05 20:25
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:169
帖 子:6389
专家分:28017
注 册:2014-5-20
  得分:4 
是不是编译器不同,提供的代码测试结果正常,或试试:
    if(n==1)  fun(a,b,&max);
    if(n==2)  fun(a,b,&min);
    if(n==3)  fun(a,b,&add);//函数调用

[此贴子已经被作者于2018-12-6 05:08编辑过]

2018-12-06 04:54
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:273
帖 子:6001
专家分:34326
注 册:2011-1-18
  得分:4 
问什么有错?
鬼知道你想问什么
2018-12-06 09:03
wlxy_wang
Rank: 4
等 级:业余侠客
威 望:1
帖 子:77
专家分:256
注 册:2018-11-2
  得分:4 
程序代码:
int fun(int x,int y,int (*p)(int ,int))
{
    int result;
    result=(*p)(x,y);
    printf("%d\n",result);
}

这个函数定义返回值是int类型,你的实现中没有return语句。加入一个return 0;就可以了
当然这个程序在一些编译器中运行时完全没问题的,但有些编译器就会把这个问题当成错误。
2018-12-06 15:00
龙岩花界
Rank: 2
等 级:论坛游民
帖 子:34
专家分:27
注 册:2018-10-18
  得分:0 
回复 4楼 wlxy_wang
感谢大佬
2018-12-06 18:54
龙岩花界
Rank: 2
等 级:论坛游民
帖 子:34
专家分:27
注 册:2018-10-18
  得分:0 
回复 2楼 吹水佬
谢谢,问题已经解决
2018-12-06 18:54
龙岩花界
Rank: 2
等 级:论坛游民
帖 子:34
专家分:27
注 册:2018-10-18
  得分:0 
回复 3楼 rjsp
谢谢,问题已经解决
2018-12-06 18:54







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

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