|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include<stdio.h>
double *ping(double x[],int n)
{
double q, p = 0, max = x[0], min = x[0];
static double d[3] ;
for (int i = 0; i < n; i++)
{
if (max < x[i]) max = x[i];
if (min > x[i]) min = x[i];
p = p + x[i];
}
q = p / n;
d[0] = q;
d[1] = max;
d[2] = min;
return d;
}
int main()
{
double* ping(double x[], int n);
double a[6] = { 99,100,100,98,95,90 }, b, c; double *d;
double p;
d = ping(a,6);
printf("平均值 最大值 最小值分别为:\n");
printf("max=%lf,min=%lf,pingjunzhi=%lf", *(d + 0), *(d + 1), *(d + 2));
}
输出值为 0 0 溢出
要么在函数ping的变量d前面加个static 要么删掉主函数printf("平均值 最大值 最小值分别为:\n");这一行才能正确输出
求解原因
不加static就是在栈上申请三个空间,存放三个值,ping函数调用结束,这三个空间都会被释放,再访问就是非法。加上static就是在全局区申请三个空间,这三个空间申请出来以后,在你程序运行期间始终存在,ping调用结束了也能在main中访问
|
|