#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]」に「サブスクライブされた値は配列、ポイント、またはベクトルではありません」というエラーメッセージが表示されますか?

ありがとう。

コメント

  • 初期化に誤りがあります:int example = [1,2,3]; and not {} 🙂
  • @AhmedEl nope ..
  • @ JakobH、Cでは、配列のサイズは固定されています—配列のサイズが決定されると、変更することはできません。現在、サイズはいくつですか。 exampleを次のように定義しましたか?exampleにプッシュしようとしている要素の数は?
  • 申し訳ありません。 'メインの前の行が表示されない…

回答

配列のサイズを設定する必要があります。

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}; 

これがお役に立てば幸いです!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です