簡體   English   中英

將動態分配的數組從main傳遞到另一個函數

[英]Passing a dynamically allocated array from main to another function

首先,我已經看過這里提供的示例:

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

應該

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM