Heim > Backend-Entwicklung > C++ > Wie geht „sizeof' mit String-Literalen in C/C um?

Wie geht „sizeof' mit String-Literalen in C/C um?

Susan Sarandon
Freigeben: 2024-12-11 10:00:16
Original
514 Leute haben es durchsucht

How Does `sizeof` Handle String Literals in C/C  ?

Erklärung der Größe von String-Literalen

Das bereitgestellte Code-Snippet hebt das Verhalten des Operators „Sizeof“ bei verschiedenen String-Literalen hervor. Lassen Sie uns in die Antworten auf die aufgeworfenen Fragen eintauchen.

  1. Warum berechnet sizeof die Länge des String-Literals?

Der Operator sizeof berechnet die Größe in Bytes, die von einem bestimmten Ausdruck belegt wird. Für ein String-Literal wird die Anzahl der Zeichen zurückgegeben, einschließlich des abschließenden Zeichens „“, das das Ende des Strings markiert. In diesem Fall besteht „f“ aus zwei Zeichen ('f' und ' '), daher gibt sizeof("f") 2 zurück.

  1. Hat das String-Literal einen anderen Typ, wenn an sizeof übergeben?

Nein, das String-Literal hat keinen anderen Typ, wenn es an sizeof übergeben wird. Es behält seinen Typ als Array konstanter Zeichen bei. Es ist jedoch wichtig zu beachten, dass ein String-Literal, wenn es an eine Funktion übergeben oder in einem Ausdruck verwendet wird, der einen Zeiger erwartet, automatisch in einen Zeichenzeiger zerfällt. Aber wenn es an sizeof übergeben wird, behält es seinen ursprünglichen Typ als Array von Zeichen bei.

In diesem Beispiel:

  • foo ist ein konstanter Zeiger auf ein konstantes Zeichen, also sizeof(foo ) gibt die Größe eines Zeigers zurück, die auf einem 32-Bit-System normalerweise 4 Byte beträgt.
  • bar ist ein Array aus konstanten Zeichen, also sizeof(bar) gibt die Größe des Arrays zurück, die 2 Bytes beträgt (eines für das „b“-Zeichen und eines für das „ '-Zeichen).

Das obige ist der detaillierte Inhalt vonWie geht „sizeof' mit String-Literalen in C/C um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage