首先,我已经看过这里提供的示例:
Passing dynamically allocated array as a parameter in C
我正在尝试将动态分配的数组作为参数传递给另一个函数。
void InputIterations(int *iterations);
void CalcE(long double *E, int iterations);
int main()
{
int iterations;
long double *E;
InputIterations(&iterations);
E = (long double *) malloc(iterations * sizeof(long double));
CalcE(&E, iterations);
}
void InputIterations(int *iterations)
{
printf("Enter a number of iterations: ");
scanf("%d", iterations);
}
void CalcE(long double *E, int iterations)
{
long double sum = 0;
int i;
for(i=0; i<iterations; i++)
{
sum = sum + /*formula for calculating irrational constant e*/
*E = sum;
E++;
}
}
然而,当我编译我的代码时,我收到以下错误:
error: cannot convert ‘long double**’ to ‘long double*’ for argument ‘1’ to ‘void CalcE(long double*, int)’ CalcE( &E, iterations );
有谁知道我为什么会收到此错误?
如果你能解释我的错误或指出我解释它的来源,我将非常感谢你的帮助。
答案 0 :(得分:3)
CalcE(&E, iterations);
应该是
CalcE(E, iterations);
希望我帮助
答案 1 :(得分:3)
下面:
CalcE(&E, iterations);
您获取E的地址(类型long double *
)并将其作为参数传递给CalcE
。 CalcE
接受指向long double
的第一个参数。但是当你取一个地址E
时,实际上你会得到指向long double
(long double**
)指针的指针,而这不是指向long double
的指针。这就是你的错误告诉你的事情:
错误:无法将'long double **'转换为'long double *'作为参数 '1'到'void CalcE(long double *,int)'CalcE(&amp; E,iterations);
所以你应该:
CalcE(E, iterations);