#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]); } }
Proč se mi zobrazují chybové zprávy: „Přebytek prvků ve skalárním inicializátoru“ na „2“ v poli I „m definuji a chybová zpráva“ Subcripted value is not an array, point or vector „at my“ [i] „when trying to print out the Ith integer in the array?
Děkujeme.
Komentáře
odpověď
Musíte nastavit velikost pole.
IE:
int example[10];
pak můžete nastavit první prvek pole na 1:
example[0] = 1;
Nelze to však provést:
int example[10]; example = {1, 2, 3};
Pokud jste již definovali pole, kompilátor od vás očekává, že určíte, který prvek (IE: [0]) pole chcete definovat (nebo změnit), pak to, co chcete tomuto prvku přiřadit ( IE: 1).
Pokud chcete, aby se velikost nastavovala automaticky, můžete toto smazat:
int example[];
a napsat toto:
int example[] = {1, 2, 3};
pak překladač ví, že definujete pole a nastavujete hodnoty hodnot 3 prvků na 1, 2 a 3.
Váš kód by měl vypadat asi takto:
#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]); } }
Doufám, že to pomůže! 🙂
Odpovědět
Provedením
int example[];
inicializujete ukazatel na pole, jehož velikost není definována. Poté v
int example = {1,2,3};
yu přidáváte hodnoty do ukazatele, což je nelogické a nemá žádný význam, stačí to udělat
int example[3]; int example = {1,2,3};
Doufám, že to pomůže!
example
, které mají být? kolik prvků se pokoušíte vložit doexample
?