| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1325 人关注过本帖
标题:【在线==】求救!请教函数指针!
只看楼主 加入收藏
lnhaing
Rank: 1
等 级:新手上路
帖 子:111
专家分:0
注 册:2008-1-30
收藏
 问题点数:0 回复次数:10 
【在线==】求救!请教函数指针!
程序代码:
#define N 12
#include 

float arr_add(float arr[],int n)//求数组元素之和
{
int i;
float sum = 0;
for(i=0; i<N; i++)
sum += arr[i];
return sum;
}
float odd_add(float *p,int n)//求下标为奇数的元素之和
{
int i;
float sum = 0;
for(i=0; i<N;I=I+2,P=P+2)
sum = sum + *p;
return sum;
}
void process(float *p,int n,float (*fun)( ))//利用函数地址作参数
{
float result;
result = ( * fun )(p,n);
printf("%8.2f\n",result); 
}

int main()
{
static float a[] = {1.5,3.8,5.6,7.8,91.6,1.61,13.3,15.0,17.5,19.9,21.7,23.0};
float arr_add(),odd_add();
void process(float *p,int n,float(*fun)());
int n = N;
process(a,n,arr_add);
process(a,n,odd_add);
return 0;
}

//运行有错误啊,看来函数指针还是没弄懂,求高手指导下!谢谢!
void process(float *p,int n,float (*fun)( ))此句有错误,
错去信息:error C2197: 'float (__cdecl *)(void)' : too many actual parameters
我是VC的!
搜索更多相关主题的帖子: float sum 函数 int 指针 
2008-04-09 10:09
lnhaing
Rank: 1
等 级:新手上路
帖 子:111
专家分:0
注 册:2008-1-30
收藏
得分:0 
人呢??哎!

我来自偶然! bitter C
2008-04-09 10:27
duxinjun123
Rank: 1
等 级:新手上路
帖 子:52
专家分:0
注 册:2007-7-6
收藏
得分:0 
先声明我也很菜呀,我感觉在引用函数时括号里不应该写变量类型吧,(*p,n.(*fun)()),也不知道对不对
2008-04-09 10:28
lnhaing
Rank: 1
等 级:新手上路
帖 子:111
专家分:0
注 册:2008-1-30
收藏
得分:0 
不对!
感觉应该类型放在(*fun)( )后面括号里面

我来自偶然! bitter C
2008-04-09 10:34
lnhaing
Rank: 1
等 级:新手上路
帖 子:111
专家分:0
注 册:2008-1-30
收藏
得分:0 
来人啊!

我来自偶然! bitter C
2008-04-09 11:55
sxn0508
Rank: 1
等 级:新手上路
帖 子:120
专家分:0
注 册:2008-1-24
收藏
得分:0 
void process(float *p,int n,float (*fun)(float *,int ))
2008-04-09 12:13
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
#define N 12
#include <stdio.h>

float arr_add(float arr[],int n)//求数组元素之和
{
int i;
float sum = 0;
for(i=0; i<N; i++)
sum += arr[i];
return sum;
}
float odd_add(float *p,int n)//求下标为奇数的元素之和
{
int i;
float sum = 0;
for(i=0; i<N;i=i+2,p=p+2)
sum = sum + *p;
return sum;
}
void process(float *p,int n,float (*fun)(float*,int) )//利用函数地址作参数
{
float result;
result = (*fun)(p,n);
printf("%8.2f\n",result);
}

int main()
{
static float a[] = {1.5,3.8,5.6,7.8,91.6,1.61,13.3,15.0,17.5,19.9,21.7,23.0};
float arr_add(float*,int),odd_add(float*,int);
void process(float *p,int n,float(*fun)(float*,int));
int n = N;
process(a,n,arr_add);
process(a,n,odd_add);
return 0;
}

学习需要安静。。海盗要重新来过。。
2008-04-09 12:23
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
要明白指向函数的指针包括函数参数类型的..要严格定义

学习需要安静。。海盗要重新来过。。
2008-04-09 12:24
lnhaing
Rank: 1
等 级:新手上路
帖 子:111
专家分:0
注 册:2008-1-30
收藏
得分:0 
谢谢各位!
汗!忘了定义参数类型!

我来自偶然! bitter C
2008-04-09 12:30
lnhaing
Rank: 1
等 级:新手上路
帖 子:111
专家分:0
注 册:2008-1-30
收藏
得分:0 
谢谢!sunkaidong

我来自偶然! bitter C
2008-04-09 12:32
快速回复:【在线==】求救!请教函数指针!
数据加载中...
 
   



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

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