有代码如下:
#include <stdio.h>
#include <stdlib.h>
int main()
{
float *p = NULL;
int i = 0;
float total = 0.0f;
p = (float *)malloc(100*sizeof(float));
/*if(p == NULL);
{
printf("Out of memory!");
exit(1);
}*/
for(i = 0;i<100;++i)
{
scanf("%f",(p+i));
if(*(p+i) == 0.0f)
break;
printf("*(p+%d) = %f\n",i,*(p+i));
total += *(p+i);
}
printf("total = %f\n",total);
printf("%f\n",total/i);
system("pause");
return 0;
}
这段代码在数据类型是float时可以正确执行,但改成double类型就不行了,这是怎么回事?还有,中间用/*括起来的部分如果也放进代码中,一执行就会闪退,这又是什么原因,难道这点内存都分配不了?
|