c语言问题:不明白这段程序

来源:百度知道 编辑:UC知道 时间:2024/06/27 06:33:03
#include <stdio.h>
#include <stdlib.h>
void fun(float *p1,float *p2,float *s)
{
s=(float *) calloc (1,sizeof(float));
*s=*p1; /*标记1*/

}
main()
{
float a[2]={2.2,1.13},b[2]={10.0,20.0},*s;
fun(a,b,s);printf("%5.2f\n",*s);
}

如果把/*标记1*/那一句换成*s=*p1+*p2++; 答案又是2.20哦~~为什么呢??

错了错了!
在fun里,
s=(float *) calloc (1,sizeof(float));
这一句改的是局部的指针s,就是说申了一个空间保存在局部变量里,然后操作完就把这个空间扔了。
而在main里,s这个指针指向的位置是不变的,是不属于你的空间,打印的结果应该是随机的。