| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 423 人关注过本帖
标题:c语言初学者,多多请教
只看楼主 加入收藏
名ms
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-12-9
收藏
 问题点数:0 回复次数:2 
c语言初学者,多多请教
请看看以下的一个代码:
#include"stdio.h"
void main()
{
int add(int);
int mul(int);
int div(int);
void integer(int,int(*function)(int));
printf("the result of the function:\n");
printf("x+3=");
integer(3,add);
printf("2*x+3=");
integer(4,mul);
printf("x/2-3=");
integer(6,div);
}
int add(int x)
{
int sum;
sum=3+x;
return(sum);
}
int mul(int x)
{
int res;
res=2*x+3;
return(res);
}
int div(int x)
{
    int res;
    res=x/2-3;
    return(res);
}

void integer(int x,int(*fun)(int x))
{
int res;
res=(*fun)(x);
printf("%d\n",res);
}
    
为什么把那个integer函数前的void类型改成int类型就不行呢,他们又什么区别吗,还是有其他的知识我遗忘了?
搜索更多相关主题的帖子: c语言 
2008-12-09 13:07
飞跃
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2008-11-25
收藏
得分:0 
因为integer函数没有返回值,它返回的相当于一个空类型。
如果要用在它之前用int,你可以这样改下
int integer(int x,int(*fun)(int x))
{
int res;
res=(*fun)(x);
printf("%d\n",res);
return res;
}
2008-12-09 13:24
名ms
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-12-9
收藏
得分:0 
回复 楼主 名ms 的帖子
呵呵,谢谢啦,原来是这样啊。不过,修改之后就出现新的错误了。。。而且如果改成int的话,那就是说返回的是一个整数,而我所要的的那个printf("%d\n",res);也没有作用了。谢谢你的指导。。
2008-12-09 14:17
快速回复:c语言初学者,多多请教
数据加载中...
 
   



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

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