-
-
Erfahrener Benutzer
Roboter Genie
String initialisieren ohne 0 ?
Da bin ich schon wieder,
eine, nein eigentlich 2 Fragen zu Strings:
char s1[ ] = "Hallo";
char s2[5] = "Hallo";
Wenn ich schreibe: char s1[] = "Hallo";
werden 5+1 Byte belegt wegen dem Nullterminator.
Was ich durch den Versuch mit sizeof(s1) bestätigt bekommen habe.
Alles klar,
was passiert aber mit folgender initialisierung ?
char s2[5] = "Hallo";
Die Buchstaben passen ja noch rein, läst der Compiler den Nullterminator einfach weg, oder könnte es passieren, daß er das nächst liegende Byte hinter dem Array mit einer 0 beschreibt. Eine Warnung tritt zumindest nicht auf beim IAR Compiler. sizeof(s2)liefert auch logischerweise 5 zurück.
Dann käme als nächstes die Frage, was passiert beim Sring Compare der beident. Hier findert die function strcmp doch keine 0 am Ende von s2.
zumindest, vermutlich, nicht unmittelbar hinter dem Array s2, sondern zufällig irgendwann....
Ist diese Initialisierung von s2 also rechtens oder eher nicht ?
Siro
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen