C语言中的指针输出问题
#include<stdio.h>
void main()
{
double* PrintfArg;
double* fun(int a[]);
PrintfArg = fun(a);
printf("%lf,%lf\n",*PrintfArg,*(PrintfArg+1));
}
double *fun(int a[50])
{
double PrintfArg[2];
PrintfArg[0]=1;
PrintfArg[1]=2;
return PrintfArg;
}
输出结果为 1,2.
若将主函数中输出改写为:
printf("%lf",*PrintfArg);
printf("%lf",*PrintfArg);
输出结果为 1,0.0000 是有误的。
地址没用被占用,在运行时会出现不同。
使用时多加注意,指针是不稳定的。
猜想:为什么输出结果会不同?
可能是因为,当函数回传一个指针时,当执行了一次操作后,当前指针所存的地址内,存储的数据已经被释放。所以值是不确定的。