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