[英]Passing a dynamically allocated array from main to another function
首先,我已經看過這里提供的示例:
我試圖將動態分配的數組作為參數傳遞給另一個函數。
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);
應該
CalcE(E, iterations);
希望我能幫上忙
這里:
CalcE(&E, iterations);
您將地址E(類型為long double *
)作為地址傳遞給CalcE
。 CalcE
接受一個指向long double
的指針作為第一個參數。 但是,當您使用地址E
時,實際上會得到一個指向long double
指針( long double**
),而不是long double
的指針。 這就是您的錯誤告訴您的內容:
錯誤:無法將參數'1'的'long double **'轉換為'long double *'到'void CalcE(long double *,int)'CalcE(&E,迭代);
因此,您應該具有:
CalcE(E, iterations);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.