Größe des String-Literals: Den Speicherbedarf von String-Konstanten verstehen
In C sind String-Literale ein integraler Bestandteil des Codes und stellen feste Sequenzen dar von Charakteren. Der sizeof-Operator spielt eine entscheidende Rolle beim Verständnis der Speicherzuordnung und des Layouts dieser String-Literale.
Frage 1: Warum berechnet sizeof die Länge eines String-Literals?
Bei Anwendung auf ein Zeichenfolgenliteral wie „f“ misst der Operator „sizeof“ die Anzahl der im Literal gespeicherten Zeichen, einschließlich des abschließenden Nullzeichens (' '). Im Fall von „f“ wird der Speicherplatz berechnet, der zum Speichern von zwei Zeichen erforderlich ist, da es sowohl das „f“ als auch den Nullterminator enthält.
Frage 2: Hat das String-Literal einen Unterschied? Typ bei Angabe von sizeof?
String-Literale haben einen bestimmten Typ: ein Array von Zeichen mit bekannter Größe, wobei die Größe das Null-Terminator enthält. Dieser Typ unterscheidet sich von char* (Zeiger auf ein Zeichen) und char[] (Array von Zeichen). Bei der Übergabe an sizeof bleibt der Array-Typ des String-Literals erhalten, was zu einem Ergebnis führt, das die Größe des Arrays und nicht die Größe eines Zeigers widerspiegelt.
Warum gibt sizeof unterschiedliche Werte für String-Literale zurück? , Arrays und Zeiger?
Denken Sie daran:
Das obige ist der detaillierte Inhalt vonWie behandelt „sizeof' String-Literale, Arrays und Zeiger in C unterschiedlich?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!