【发布时间】:2017-10-19 21:21:05
【问题描述】:
我需要从一个功能转移到另一个功能。我尝试这样:
double toarray(double x,int n)
{
double * results = new double[n];
for (int j = 0; j < n; j++)
{
results[j] = function( x);
x += jump;
}
return *results;
}
void showarr(double*arr[],int n,double x)
{
for(int i=0;i<n;i++)
{
printf("Wynik dla x=" "%.2lf", x);
if (denomcheck(x) == true && function(x)<INT_MAX)
{
printf(" | y=%.2lf \n", arr[i]);
}
else
printf(" | MIANOWNIK = 0!!! \n");
x += jump;
}
}
但是当我尝试调用 toarray 作为 showarr 的变量时:
showarr(toarray(x, n), n, x);
我在 vs 2017 中遇到 E0167 错误。
“参数类型“double”与参数类型“double **”不兼容”
【问题讨论】:
-
toarray()应该返回double *,而不是double。你的编译器也应该警告你。此外,showarr()应该接受double *,而不是double *[]。 -
你把
C和C++搞混了,为什么? -
@WG97 向 C 标准委员会提议 double 和 double ** 类型兼容。
-
谁是
delete[]-当showarr完成数组时?为什么不能使用std::vector<double>? -
@JohnBollinger 假设
jump和function在外部声明,我不明白为什么编译器应该警告toarray的实现(除非编译器进行一些静态泄漏检查)
标签: c++ arrays visual-studio dynamic-arrays