#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

  • V inicializaci došlo k chybě: int example = [1,2,3]; a ne {} 🙂
  • @AhmedEl ne ..
  • @JakobH, v jazyce C má pole pevnou velikost – jakmile je určena velikost pole, nelze ji změnit. nyní jaká je velikost že jste definovali example, které mají být? kolik prvků se pokoušíte vložit do example?
  • Omlouvám se ' nevidíte řádek před hlavním …

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!

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *