#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
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!
example
-t meghatároztad? hány elemet próbálsz betolniexample
?