大佬帮我看看标记地方的问题
程序代码:#include "stdio.h"
#include "stdlib.h"
#include "ctype.h"
#define capacity 2
int main(void)
{
double *pstr = NULL;
double *value = NULL;
double *ave = NULL;
int count = 0;
int add = 0;
char answer = 'n';
do
{
if (count == add)
{
add += capacity;
pstr = (double*)malloc((add)*sizeof(double));
if (value != NULL)
{
for (int i = 0; i < count; i++)
*(pstr + i) = *(value + i);
free(value);
}
value = pstr;
pstr = NULL;有这一行就会运行出错,但是删除这一句就好了,原因是什么?
}
printf("请输入任意浮点数:\n");
scanf_s(" %lf", pstr + count++);
printf("还有吗?\n");
scanf_s(" %c", &answer);
} while (tolower(answer) == 'y');
ave = (double*)malloc(count*sizeof(double));
if (count < add)
{
for (int i = count; i < add; i++)
free(value + i);
}
for (int i = 0; i < count-1; i++)
{
*ave = 0.0;
*ave += *(value + i);
}
printf("%.2lf\n", *ave / count);
free(ave);
free(value);
return 0;
}

