Array-Fehler
-
Hallo
Ich habe einen (Integer-) Array erstellt und direkt danach (aufgrund vorangehender Fehler) [0] abgefragt. Das Ergebnis war nicht 0, sondern irgendeine hohe Zahl (auf jeden Fall nicht das was ich erwartet hatte).
Da der Array wichtig für mein Programm ist brauche ich eure Hilfe.
-
Nicht initialisierter Speicher?
-
Ich guck mal.
-
Ja, ist aber durch 'ne Variable deklariert (sorry falls ich die falschen Begriffe verwende).
-
Ich glaub du weißt nicht was ein Array ist.
int array[10];
Das sind einfach 10 Variablen vom Typ int die du über array[0] bis array[9] erreichst.
Denen kannst du dann Werte zuweisen:array[0]=13; array[1]=15; ...
wenn du ihnen keine Werte zuweißt dann enthalten sie eben irgendwelche zufällige.
-
Was ein Array ist, weiß ich, nur ich dachte, die reservierten Speicherstellen würden auf 0 gesetzt.
-
kann muss aber nicth
-
array_1 schrieb:
kann muss aber nicth
Nein, in C++ ist undefiniert, was in dem Array steht. In Java z.B. ist definiert, dass da 0 (oder null) drinsteht.
-
Skym0sh0 schrieb:
array_1 schrieb:
kann muss aber nicth
Nein
Doch. Hast du ihn missverstanden?
-
Kommt drauf an, ob es sich um eine globale oder lokale Variable handelt - nur globale werden auf 0 gesetzt.
-
Th69 schrieb:
Kommt drauf an, ob es sich um eine globale oder lokale Variable handelt - nur globale werden auf 0 gesetzt.
Was aber auf keinen Fall als Aufforderung verstanden werden sollte, globale Variablen zu nutzen
-
Wenn man gerne ein lokales auf 0 initialisiertes Array haben möchte kann man das einfach so machen:
int array[10] = {};
-
Das ist ein Syntaxfehler, also Müll.
-
Wutz schrieb:
Das ist ein Syntaxfehler
Was?
-
Falls das von sebi707 gemeint ist, ich schreib das auch immer so. Sowohl bei Arrays als auch bei structs.
-
hustbaer schrieb:
Falls das von sebi707 gemeint ist, ich schreib das auch immer so. Sowohl bei Arrays als auch bei structs.
Ich auch. Ich glaub' Wutz ist nicht ganz bei Sinnen, denn der Code ist sowohl gültiges C++ als auch C.
-
Arcoth schrieb:
Ich auch. Ich glaub' Wutz ist nicht ganz bei Sinnen, denn der Code ist sowohl gültiges C++ als auch C.
Stimmt leider nicht. In C kann man das so nicht machen, da muss man
int array[10] = {0};
schreiben.
-
GCC scheint etwas anderes zu behaupten. Eine Erweiterung? Du hast nämlich Recht, die Grammatik in §6.7.9/1 ist eindeutig dagegen.
-
Mit
-pedantic
ist GCC auch dagegen:warning: ISO C forbids empty initializer braces [-Wpedantic]
-
Ja, damit ist die Erweiterung weg. Warum werden leere Listen nicht erlaubt?