まずオフにメインから動的に割り当てられた配列を渡す、私はすでにここに提示された例を見てきました:別の関数
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);
は、私はこのエラーを取得しています、なぜ誰もが知っていますか?
私の間違いを説明したり、それを説明する情報源を教えていただけたら、私は助けを非常に感謝します。
は再びエラーメッセージを見てみましょう。それは本当にあなたが知る必要があるすべてを伝えます。それでもまだわからない場合は、書籍に戻り、アドレス演算子( '&')とそれが何をするのかを詳しく読んでください。とにかくそれを行う必要があります。なぜなら、あなたは本当に複数の場所でそれを悪用するからです。(例えば、 'scanf'コールも詳しく見てください)。 –
'Pi'は既にポインタであり、'&Pi'はポインタへのポインタ、つまりダブルポイナであることを知る必要があります。コールは 'CalcPi(Pi、iterations);となります。 –
**言語を選択してください。** C++では、単に" use std :: vector "と答えています。 –