gpt4 book ai didi

c - 将动态分配的数组从 main 传递到另一个函数

转载 作者:行者123 更新时间:2023-12-02 08:18:13 25 4
gpt4 key购买 nike

首先,我已经看过这里给出的示例:

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 );

有谁知道我为什么会收到这个错误?

如果您能解释我的错误或指出可以解释错误的来源,我将不胜感激。

最佳答案

这里:

CalcE(&E, iterations);

您获取 E 的地址(long double * 类型)并将其作为参数传递给 CalcECalcE 接受一个指向 long double 的指针作为第一个参数。但是当你获取 E 的地址时,你实际上得到了一个指向 long double (long double**) 的指针,那就是不是指向 long double 的指针。这就是您的错误告诉您的内容:

error: cannot convert ‘long double**’ to ‘long double*’ for argument ‘1’ to ‘void CalcE(long double*, int)’ CalcE( &E, iterations );

所以你应该:

CalcE(E, iterations);

关于c - 将动态分配的数组从 main 传递到另一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39868686/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com