2017-11-15 3 views
0

gerade gelernt, über CStrings in meinem Informatik-Klasse und es hat mich nur, das ist legalzuweisen Wert Element einer cstring

char ch[] = "hello"; 

Allerdings scheint es, dass ich auch auf die „fünfte“ zuweisen Element in diesem Array

ch[5] = "!"; 

Ist das erlaubt? Oder überschreibe ich einfach das Nullzeichen am Ende des Arrays?

Antwort

0

Nein, das ist nicht erlaubt. Wie Sie gesagt haben, überschreibt dies das Nullzeichen am Ende. Es verursacht zu diesem Zeitpunkt keinen Fehler, da Sie auf einen gültigen Index zugreifen.

Wenn Sie jedoch versuchen, die Zeichenfolge zu drucken, weiß die Druckfunktion nicht, wo die Zeichenfolge endet. Die Druckfunktion wird weiterhin die Zeichen drucken, bis sie versehentlich ein Null-Byte erreicht, oder etwas anderes geht mit Pufferüberlauf schrecklich falsch. Dies ist ein nicht definiertes Verhalten. Dasselbe Problem tritt bei anderen Zeichenfolgenfunktionen, strcpy, strlen, strcmp ... auf, die sich alle auf das Nullzeichen verlassen, um das Ende der Zeichenfolge zu finden.

Verwandte Themen