私は次のプログラムを持っています。
#include <stdio.h>
double getAverage(int *arr[], int size) {
int i, sum = 0;
double avg;
for (i = 0; i < size; ++i)
{
printf("%d %d\n", i, arr[i]);
sum = sum + arr[i];
}
printf("%d\n", sum);
avg = (double)sum / size;
return avg;
}
int main ()
{
/* an int array with 5 elements */
int balance[5] = {1000, 2, 3, 17, 50};
double avg;
/* pass pointer to the array as an argument */
avg = getAverage( balance, 5 ) ;
/* output the returned value */
printf("Average value is: %f\n", avg );
return 0;
}
出力が正しくありません。* arr []値を出力すると、残高値と同じではありません。このプログラムを修正する理由と方法を知っていますか?
0 1000
1 3
2 50
3 0
4 0
256992
Average value is: 51398.400000
あなたの関数は次のように宣言されています
double getAverage(int *arr[], int size)
つまり、最初の引数は、配列のことになっているポインタへint
。
それからあなたはそれを次のように呼びます
getAverage( balance, 5 )
ここで、balance
はの配列でありint
、最初の要素へのポインタに減衰します(つまりbalance
、に等しい&balance[0]
)。これはタイプがありint *
ます。
2つのタイプは不一致であり、コンパイラーはこれについて警告する必要があります。
解決策は、関数の引数を修正することです。
double getAverage(int *arr, int size)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加