c语言怎么用return返回一个数组,并输出,程序如下
c语言如何用return返回一个数组,并输出,,程序如下
#include<stdio.h>
int main()
{
int a[10]={1,2,5,4,7,8,9,10,3,6},*p;
int *score(int a[10],int n);
int i;
p=score(a,10);
for(i=0;i<3;i++,p++)
printf("%d ",*p);
}
int *score(int a[10],int n)
{
int i,max=a[0],min=a[0],sum=a[0],average,b[3];
for(i=1;i<n;i++)
{
if(max<a[i]) max=a[i];
if(min>a[i]) min=a[i];
sum=sum+a[i];
}
average=sum/n;
b[0]=max;
b[1]=min;
b[2]=average;
return (b);
}我输出时,只有一个是返回正确的,后面输出的乱七八糟。。。是用vc++6.0来实行的,求高手解答
------解决方案--------------------
b是个局部变量 不能这么干的
------解决方案--------------------
b[3]在函数结束时就释放掉了内存了 你可以加一个参数 数组 用来接收要的结果 也可以全局数组来接收
#include<stdio.h>
int main()
{
int a[10]={1,2,5,4,7,8,9,10,3,6},*p;
int *score(int a[10],int n);
int i;
p=score(a,10);
for(i=0;i<3;i++,p++)
printf("%d ",*p);
}
int *score(int a[10],int n)
{
int i,max=a[0],min=a[0],sum=a[0],average,b[3];
for(i=1;i<n;i++)
{
if(max<a[i]) max=a[i];
if(min>a[i]) min=a[i];
sum=sum+a[i];
}
average=sum/n;
b[0]=max;
b[1]=min;
b[2]=average;
return (b);
}我输出时,只有一个是返回正确的,后面输出的乱七八糟。。。是用vc++6.0来实行的,求高手解答
------解决方案--------------------
b是个局部变量 不能这么干的
------解决方案--------------------
b[3]在函数结束时就释放掉了内存了 你可以加一个参数 数组 用来接收要的结果 也可以全局数组来接收