[解決済み] 「error: expected ';', ',' or ')' before numeric constant" と表示される。
質問
関数の平均値を出すプログラムです。エラーが発生します。
error: 数値定数の前に ';', ',' または ') が必要です。
をビルドするたびに、avg_array()関数内でエラーが発生します。助けていただけるとありがたいです、ありがとうございます
#include <stdio.h>
#define SIZE 5
// Prototypes
int avg_array (int*, int);
main()
{
int values[SIZE];
int avg;
int i;
printf("Enter 5 numbers please. \n");
for(i=0; i<SIZE; i++)
{
scanf("%d", &values[i]);
}
avg = avg_array(values, SIZE);
printf("\n The avg of the array is %d \n", avg);
getchar();
getchar();
} // end main()
/* Implement avg_array() WHERE THE ERROR PERTAINS */
avg_array(int my_array[], int SIZE)
{
int sum;
int i;
int fxn_average;
for(i=0; i<SIZE; i++)
{
sum = sum + my_array[i];
}
fxn_average = (sum/SIZE);
return (fxn_average);
}
解決方法は?
識別子を使用している
SIZE
を引数として与えます。 これもマクロで変換され
5
をプリプロセッサーで処理します。 プリプロセッサがマクロを適用した後、次のようになります。
avg_array (int my_array[], int 5)
以降
5
は識別子ではなく数値定数であるため、エラーが発生します。 変数名を変更してください。
また、関数のシグネチャに戻り値の型がないように見えますが、これは上で宣言したプロトタイプに一致するはずです。 代わりにこれを試してみてください。
int avg_array (int *my_array, int size)
{
int sum = 0;
int i;
for(i=0; i<size; i++)
{
sum = sum + my_array[i];
}
return sum/size;
}
変数
sum
は 0 に初期化する必要があります。また、ローカル変数
fxn_average
を使うだけなので、必要ありません。
return sum/size;
を最後に追加します。
第1引数の型を
int[]
(の配列)。
int
) から
int *
(へのポインタ)。
int
という関数があります。
定義
は、問題で与えられたプロトタイプと一致します。その関数は
宣言
として
int avg_array (int*, int);
これらの引数には識別子がなく、型のみが指定されています。 これは有効なC言語ですが、多くのスタイルガイドでは、引数に名前を付けると読者が意味や意図を理解しやすくなるため、これを禁止しています。 例えば、プログラミング・インターフェースを書く場合、プログラマーが目にするのはヘッダーファイルの中の関数プロトタイプだけでしょう。 正しい関数呼び出しを書くためには、引数が何であるかが明確でなければならない。 とにかく、識別子を入れることは、次のようになる。
int avg_array (int *my_array, int size);
というのは 定義 上で使った
関連
-
[解決済み】C 言語の添え字で配列の要素値を代入すると、配列でもポインタでもベクトルでもない値になる
-
[解決済み】警告:互換性のないポインタ型からの代入
-
[解決済み】エラー:イニシャライザー要素がロード時に計算可能でない
-
[解決済み] struct で "warning: useless storage class specifier in empty declaration" (警告: 空の宣言での無駄なストレージクラス指定子)
-
[解決済み】警告:組み込み関数'printf'の非互換な暗黙の宣言(デフォルトで有効]
-
[解決済み】Linuxでexeclp()がどのように動作するのか理解できません。
-
[解決済み】malloc():メモリ破壊
-
[解決済み】0LLや0x0ULの意味は何ですか?
-
[解決済み】makefile:4。*** missing separator. 停止する
-
[解決済み] Cプログラムで「配列の添え字が整数でない」。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】EAGAINとはどういう意味ですか?
-
[解決済み】Linuxでexeclp()がどのように動作するのか理解できません。
-
[解決済み】C言語でint64_t型を表示する方法
-
[解決済み】LinuxのI_PUSHに相当するもの
-
[解決済み】malloc():メモリ破壊
-
[解決済み] テスト
-
[解決済み】.axfファイルとは何ですか?
-
[解決済み】Errno: 11, Resource Temporarily Unavailable(リソースが一時的に利用できない
-
[解決済み】c - 警告:関数 'printf'の暗黙の宣言
-
[解決済み】なぜアスタリスクは型の後ではなく、変数名の前にあるのですか?