Heim > Backend-Entwicklung > C++ > Hauptteil

Was ist der Unterschied zwischen „char*' und „char[]' in C?

Barbara Streisand
Freigeben: 2024-10-27 04:47:02
Original
628 Leute haben es durchsucht

 What's the Difference between `char*` and `char[]` in C?

Den Unterschied zwischen char* und char[] verstehen

Beim Umgang mit Zeichenarrays und Zeigern in der C-Programmierung ist es wichtig, die zu verstehen grundlegende Unterschiede zwischen char str[] = "Test"; und char *str = "Test";.

char str[] = "Test";

In dieser Deklaration stellt str ein Array von Zeichen (chars) dar. mit fester Größe, initialisiert mit dem Inhalt der Zeichenfolge „Test“. Das Array besitzt seinen eigenen Speicher und unterscheidet sich vom ursprünglichen String-Literal. Alle Änderungen an str verändern die lokale Kopie der Daten, nicht die Zeichenfolge „Test“ selbst.

char *str = "Test";

Hier str ist ein Zeiger, insbesondere ein Zeiger auf das erste Zeichen des String-Literals „Test“. Der Zeiger speichert die Speicheradresse dieses Zeichens. Es ist jedoch wichtig zu bedenken, dass str nicht Eigentümer des Speichers ist, in dem die Zeichenfolge gespeichert ist. Stattdessen verweist es auf das schreibgeschützte String-Literal (const). Folglich führt jeder Versuch, die Zeichenfolge zu ändern, auf die str zeigt, zu undefiniertem Verhalten.

Hauptunterschiede:

  1. Eigentum: char[]-Arrays besitzen ihre Daten, während char*-Zeiger auf Daten verweisen, die einer anderen Entität gehören.
  2. Veränderlichkeit: char[]-Arrays können geändert werden (z. B. neue Werte zugewiesen werden), aber char * Zeiger verweisen auf unveränderliche Literale, und das Ändern der Daten, auf die sie verweisen, ist undefiniert.
  3. Speicherzuweisung: char[]-Arrays weisen lokalen Speicher auf dem Stapel zu, wohingegen char*-Zeiger darauf verweisen können Speicher an einer beliebigen Stelle im Programm, einschließlich Literalen und anderem zugewiesenen Speicher.
  4. Größenbestimmung: Die Größe von char[]-Arrays wird zur Kompilierungszeit festgelegt, während die Größe der Daten, auf die verwiesen wird, festgelegt wird char*-Zeiger werden durch die Daten selbst oder durch die Zuweisung von externem Speicher bestimmt.

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen „char*' und „char[]' in C?. 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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!