#include <cs50.h> #include <stdio.h> int example[]; int main(void) { int example = {1,2,3}; for (int i = 0; i < 3; i++) { printf("%i \n", example[i]); } }
エラーメッセージが表示されるのはなぜですか:「スカラー初期化子の要素が「2」にあります」配列内で私が定義しているのですが、配列内のI番目の整数を出力しようとすると、「[i]」に「サブスクライブされた値は配列、ポイント、またはベクトルではありません」というエラーメッセージが表示されますか?
ありがとう。
コメント
回答
配列のサイズを設定する必要があります。
IE:
int example[10];
次に、これを実行して設定できます配列の最初の要素を1:
example[0] = 1;
ただし、これを行うことはできません:
int example[10]; example = {1, 2, 3};
すでに配列を定義している場合、コンパイラは、配列のどの要素(IE:[0])を定義(または変更)するか、次にその要素に何を割り当てるか(IE:[0])を定義することを期待します( IE:1)。
サイズを自動的に設定する場合は、次を削除できます:
int example[];
次のように記述します:
int example[] = {1, 2, 3};
次に、コンパイラは、配列を定義し、3つの要素の値の値を1、2、および3に設定していることを認識します。
コードは次のようになります。
#include <cs50.h> #include <stdio.h> int main(void) { int example[] = {1,2,3}; for (int i = 0; i < sizeof(example) / 4; i++) { printf("%d\n", example[i]); } }
これがお役に立てば幸いです。 🙂
回答
実行する
int example[];
サイズが定義されていない配列へのポインタを初期化しています。その後、
int example = {1,2,3};
yuはポインタに値を追加しますが、これは非論理的であり、次のように実行できる意味はありません。
int example[3]; int example = {1,2,3};
これがお役に立てば幸いです!
example
を次のように定義しましたか?example
にプッシュしようとしている要素の数は?