| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 987 人关注过本帖
标题:关于函数返回值得疑问
只看楼主 加入收藏
sophiana
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2004-11-22
收藏
 问题点数:0 回复次数:10 
关于函数返回值得疑问

程序如下,编译得时候有错误原因为何?急切想知道答案。 main() { float average(float *p,int n); float search(float (*p)[4],int n); float score[3][4]= {{65.2,67.6,79,60},{80.8,87,90,81}, {90,99,100,98.9}}; average(*score,12);

search(score,2); }

float average(float *p,int n) { float *p_end, sum=0,aver; p_end=p+n-1; for(;p<=p_end;p++) sum=sum+(*p); aver=sum/n; printf("average=%f\n",aver); }

float search(float (*p)[4], int n) { int i; printf(" No.%d :\n",n); for(i=0;i<4;i++) printf("%.2f ",*(*(p+n)+i)); printf("\n"); }

搜索更多相关主题的帖子: 函数 疑问 
2004-11-29 19:23
corrupt
Rank: 2
等 级:新手上路
威 望:3
帖 子:535
专家分:0
注 册:2004-9-29
收藏
得分:0 

老兄,你的程序好多错哦.不过我帮你该了的, 不知道你为什么用 二维的 数组 求 average, 还有,你都没返回值, 那你float search(float (*p)[4], int n)为什么? -> void search(float (*p)[4], int n)才是啊!!

#include<stdio.h> void average(double (*p)[4],int n); void search(double (*p)[4],int n); void main() { double score[3][4]={65.2,67.6,79,60,80.8,87,90,81,90,99,100,98.9}; average(score,12); search(score,2); }

void average(double (*p)[4],int n) { double sum=0,aver; int i,j; for(i=0;i<3;i++) for(j=0;j<4;j++) sum=sum+*(*(p+i)+j); aver=sum/n; printf("average=%f\n",aver); }

void search(double (*p)[4], int n) { int i; printf(" No.%d :\n",n); for(i=0;i<4;i++) printf("%.2f ",*(*(p+n)+i)); printf("\n"); }

不过你的程序 太牵强了, 没什么 自由性,

比如你的 数组 就必须是[3][4]的,不然 就要改,所以 建议你好好的把程序改改~

[此贴子已经被作者于2004-11-29 20:57:15编辑过]


2004-11-29 20:42
corrupt
Rank: 2
等 级:新手上路
威 望:3
帖 子:535
专家分:0
注 册:2004-9-29
收藏
得分:0 

还有,你的 float average(float *p,int n) 怎么可以 调用 二维的 score呢??

二维就要 用二维的 形参,(*p)[4],


2004-11-29 21:00
corrupt
Rank: 2
等 级:新手上路
威 望:3
帖 子:535
专家分:0
注 册:2004-9-29
收藏
得分:0 

还有 请把

float average(float *p,int n); float search(float (*p)[4],int n);

写在主函数 外~~


2004-11-29 21:00
corrupt
Rank: 2
等 级:新手上路
威 望:3
帖 子:535
专家分:0
注 册:2004-9-29
收藏
得分:0 
average(*score,12);    *score没必要加 指针, 只要 数组的地址就可以了~

2004-11-29 21:01
corrupt
Rank: 2
等 级:新手上路
威 望:3
帖 子:535
专家分:0
注 册:2004-9-29
收藏
得分:0 

p_end=p+n-1; 这两个 怎么可以相等呢,

一个是一维的,一个 是二维的


2004-11-29 21:02
corrupt
Rank: 2
等 级:新手上路
威 望:3
帖 子:535
专家分:0
注 册:2004-9-29
收藏
得分:0 

有除法时 ,请用double , 不然会有warn!!


2004-11-29 21:03
时空之蕊
Rank: 2
等 级:新手上路
威 望:3
帖 子:691
专家分:0
注 册:2004-10-31
收藏
得分:0 
以下是引用corrupt在2004-11-29 21:00:09的发言:

还有,你的 float average(float *p,int n) 怎么可以 调用 二维的 score呢??

二维就要 用二维的 形参,(*p)[4],

呵呵,这个当然可以了!指针就是指针我们只要注意计算方法不同就好了!!

我渴望掌控时空的核心——用最先进的技术,打造无比美丽的世界!
2004-11-29 21:30
sophiana
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2004-11-22
收藏
得分:0 
回复:(corrupt)还有,你的 float average(float *p...

你可能没有认真看我的程序,两次调用是不一样的,指针的灵活性就在这里,

再说你可能没有明白我的问题所在。

2004-11-30 18:56
sophiana
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2004-11-22
收藏
得分:0 
回复:(corrupt) p_end=p+n-1;这两个 怎么可以相等...
因为调用方式不一样,传递过来的不是二维的指针,都是一维的,二维数组的指针可以变化的。
2004-11-30 19:04
快速回复:关于函数返回值得疑问
数据加载中...
 
   



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

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