值传不回主函数,哪里不对?有分追加

来源:百度知道 编辑:UC知道 时间:2024/06/27 10:04:49
float *f(float *a,int n)
{
int min,max;
float *p,b[4];

min=max=0;
for(int i=0;i<n;i++)
{
if(a[i]<a[min]) min=i;
if(a[i]>a[max]) max=i;
}
b[0]=a[min];
b[1]=a[max];
b[2]=min;
b[3]=max;
p=&b[0];
return p;
}
我写的一段函数,在函数内执行正常,但是为什么P指针指向的数组值传不回主函数

#include<stdio.h>
#include<stdlib.h>
float *f(float *a,int n)
{
int min,max;
float *p,*b=(float*)malloc(sizeof(float)*4);

min=max=0;
for(int i=0;i<n;i++)
{
if(a[i]<a[min]) min=i;
if(a[i]>a[max]) max=i;
}
b[0]=a[min];
b[1]=a[max];
b[2]=min;
b[3]=max;
p=&b[0];
return p;
}

int main(void)
{
float a[5] = {2.0f,1.0f,1.2f,1.5f,5.8f};
float *pFloatArray = f(a, 2);

for(int i=0; i<2; i++)
{
printf("%f\t", pFloatArray[i]);
}

return 0;
}

返回局部变量的指针,是这样的吗?
感觉有点乱。
不妨加上 static

float **f(float *a,int n)