#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]); } }
Warum erhalte ich die Fehlermeldung: „Überschüssige Elemente im Skalarinitialisierer“ bei „2“ in dem Array, das ich definiere, und die Fehlermeldung „Der tiefgestellte Wert ist kein Array, Punkt oder Vektor“ an meinem „[i]“, wenn versucht wird, die i-te Ganzzahl im Array auszudrucken?
Danke.
Kommentare
- Bei der Initialisierung ist ein Fehler aufgetreten: int example = [1,2,3]; und nicht {} 🙂
- @AhmedEl nein ..
- @JakobH, in C hat ein Array eine feste Größe – sobald die Größe eines Arrays bestimmt ist, kann sie nicht mehr geändert werden. Wie groß ist sie nun? dass Sie definiert haben,
example
zu sein? Wie viele Elemente möchten Sie inexample
verschieben? - Entschuldigung, nicht wahr? ' Die Zeile vor main wird nicht angezeigt …
Antwort
Sie müssen die Größe des Arrays festlegen.
IE:
int example[10];
Dann können Sie dies tun, um festzulegen Das erste Element des Arrays lautet 1:
example[0] = 1;
Sie können dies jedoch nicht tun:
int example[10]; example = {1, 2, 3};
Wenn Sie das Array bereits definiert haben, erwartet der Compiler, dass Sie definieren, welches Element (IE: [0]) des Arrays Sie definieren (oder ändern) möchten, und was Sie diesem Element zuweisen möchten ( IE: 1).
Wenn die Größe automatisch eingestellt werden soll, können Sie Folgendes löschen:
int example[];
und schreiben Sie Folgendes:
int example[] = {1, 2, 3};
Dann weiß der Compiler, dass Sie das Array definieren und die Werte der Werte der 3 Elemente auf 1, 2 und 3 setzen.
Ihr Code sollte ungefähr so aussehen:
#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]); } }
Hoffe, das hilft! 🙂
Antwort
Mit
int example[];
Sie initialisieren einen Zeiger auf ein Array, dessen Größe nicht definiert ist. Danach fügen Sie in
int example = {1,2,3};
dem Zeiger Werte hinzu, was unlogisch ist und keine Bedeutung hat. Sie können es einfach wie
int example[3]; int example = {1,2,3};
Hoffe, das hilft!