【发布时间】:2021-09-27 22:08:57
【问题描述】:
我正在尝试将 pq 公式的解决方案作为动态创建的数组返回。 这样做的正确方法是什么? 这是我的功能:
double *pq (double a, double b)
{
double x1=(-1)*(a/2)-sqrt((a/2)*(a/2)-b);
double x2=(-1)*(a/2)+sqrt((a/2)*(a/2)-b);
double *arr[]=(double *)malloc(2*sizeof(double));
arr[2]={{x1}, {x2}};
return arr;
}
另外,为什么我在arr[2]={{x1}, {x2}}; 上收到“预期的表达式”错误?
我的主要功能:
int main ()
{
double *arr[2]={0}, a=0.00, b=0.00;
scanf("%lf %lf", a,b);
if ((a*a)-(b*a)>=0)
{
for (int i=0; i<2; i++)
{
arr[i] = pq(a,b);
}
}
else
{
printf("Es gibt keine reellen L\224sungen.");
}
for (int i=0; i<2;i++)
{
printf("%lf", arr[i]);
}
return 0;
}
【问题讨论】:
-
您的
arr变量类型错误,即使更正,您也会破坏您的数组(索引是从零开始的,所以[1]是长度为 2 的数组的最大索引)。 -
考虑返回一个结构体,其中包含两个双精度数组和一个整数,用于计算实际解决方案的数量,并完全避免动态分配。
标签: c dynamic-memory-allocation dynamic-arrays return-type function-definition