当前位置: 代码迷 >> C语言 >> 关于函数返回值得疑问
  详细解决方案

关于函数返回值得疑问

热度:252   发布时间:2004-11-29 19:23:00.0
关于函数返回值得疑问

程序如下,编译得时候有错误原因为何?急切想知道答案。 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"); }

搜索更多相关的解决方案: 函数  疑问  

----------------解决方案--------------------------------------------------------

老兄,你的程序好多错哦.不过我帮你该了的, 不知道你为什么用 二维的 数组 求 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编辑过]


----------------解决方案--------------------------------------------------------

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

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


----------------解决方案--------------------------------------------------------

还有 请把

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

写在主函数 外~~


----------------解决方案--------------------------------------------------------
average(*score,12);    *score没必要加 指针, 只要 数组的地址就可以了~
----------------解决方案--------------------------------------------------------

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

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


----------------解决方案--------------------------------------------------------

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


----------------解决方案--------------------------------------------------------
以下是引用corrupt在2004-11-29 21:00:09的发言:

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

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

呵呵,这个当然可以了!指针就是指针我们只要注意计算方法不同就好了!!
----------------解决方案--------------------------------------------------------
回复:(corrupt)还有,你的 float average(float *p...

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

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


----------------解决方案--------------------------------------------------------
回复:(corrupt) p_end=p+n-1;这两个 怎么可以相等...
因为调用方式不一样,传递过来的不是二维的指针,都是一维的,二维数组的指针可以变化的。
----------------解决方案--------------------------------------------------------
  相关解决方案