#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]); } } 

Miért adja ez nekem a hibaüzeneteket: “A skalár inicializálóban lévő elemfelesleg” a “2” a tömbben “m definiálom, és az” Aláírt érték nem tömb, pont vagy vektor “hibaüzenet jelenik meg az” [i] “-nél, amikor megpróbálom kinyomtatni a tömb I. egész számát?

Köszönet.

Megjegyzések

  • Hiba történt az inicializálásban: int example = [1,2,3]; és nem {} 🙂
  • @AhmedEl nope ..
  • @JakobH, C-ben egy tömb rögzített méretű – ha egy tömb méretét meghatározták, nem lehet megváltoztatni. Most mi a méret hogy a example -t meghatároztad? hány elemet próbálsz betolni example?
  • Sajnálom, nem sikerült ' nem látja a sort a fő előtt …

Válasz

Be kell állítania a tömb méretét.

IE:

int example[10]; 

akkor ezt megteheti a beállításhoz a tömb első eleme az 1-re:

example[0] = 1; 

Ezt azonban nem lehet megtenni:

int example[10]; example = {1, 2, 3}; 

Ha már definiálta a tömböt, a fordító elvárja, hogy meghatározza a tömb melyik elemét (IE: [0]) definiálja (vagy módosítsa), akkor mit szeretne rendelni az elemhez ( IE: 1).

ha azt szeretné, hogy a méret automatikusan legyen beállítva, törölje ezt:

int example[]; 

és ezt írja:

int example[] = {1, 2, 3}; 

akkor a fordító tudja, hogy te definiálod a tömböt, és a 3 elem értékeinek értékét 1, 2 és 3 értékre állítod.

A kódjának így kell kinéznie:

#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]); } } 

Remélem, ez segít! 🙂

Válasz

Ezzel

int example[]; 

egy tömböt inicializál, amelynek mérete nincs meghatározva. Ezt követően a

int example = {1,2,3}; 

mezőben értékeket ad hozzá a mutatóhoz, amely logikátlan és nincs értelme, csak úgy csinálhatja, mint

int example[3]; int example = {1,2,3}; 

Remélem, ez segít!

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük