Heim > Backend-Entwicklung > C++ > Strings in C zuweisen

Strings in C zuweisen

Mary-Kate Olsen
Freigeben: 2025-01-26 08:03:09
Original
982 Leute haben es durchsucht

Der bereitgestellte Text erklärt den Unterschied zwischen der Verwendung eines Zeichenzeigers (char *string) und einem Zeichenarray (char string[]), um Zeichenfolgen in C. zu speichern und zu modifizieren.

Die C -Code -Beispiele zeigen eine entscheidende Unterscheidung zwischen Zeigern und Arrays, häufig eine Quelle der Verwirrung für Anfänger. Betrachten Sie diese Ausschnitte:

Assigning strings in C

Beispiel 1 (Segmentierungsfehler):

<code class="language-c">#include <stdio.h>
int main(void) {
    char *string = "Wello, world!"; // string is a pointer
    string[0] = 'H';              // Attempting to modify a read-only string
    puts(string);
}</code>
Nach dem Login kopieren
Dieser Code führt zu einem Segmentierungsfehler. Warum? Weil

als string Zeiger für einen Zeichen deklariert wird. Dieser Zeiger wird initialisiert, um auf einen String-Literal ("Wello, World!") Zu verweisen, der normalerweise im schreibgeschützten Speicher gespeichert ist. Der Versuch, den Inhalt dieses schreibgeschützten Speichers zu ändern

Beispiel 2 (erfolgreiche Änderung):

Dieser Code druckt erfolgreich "Hallo, Welt!". Hier wird
<code class="language-c">#include <stdio.h>
int main(void) {
    char string[] = "Wello, world!"; // string is an array
    string[0] = 'H';              // Modifying a writable copy of the string
    puts(string);
}</code>
Nach dem Login kopieren
als

Zeichenarray string deklariert. Der Compiler verteilt Platz auf dem Stapel, um eine Kopie des Saitenliterales zu halten. Diese Kopie ist beschreibbar und ermöglicht eine Änderung von ohne einen Fehler zu verursachen. string[0]

Der Schlüsselunterschied:

Der grundlegende Unterschied liegt darin, wie die Zeichenfolge gespeichert wird. In Beispiel 1 befindet sich das String Literal im schreibgeschützten Speicher, und der Zeiger zeigt einfach darauf. In Beispiel 2 wird ein beschreibbares

kopieren

des String -Literales erstellt und im Array auf dem Stapel gespeichert.

Schlussfolgerung:

Zeiger und Arrays sind unterschiedliche Datentypen in C. Während sie in einigen Kontexten ähnlich erscheinen können, kann ihr Verhalten signifikant unterschiedlich sein, insbesondere im Umgang mit String -Literalen. Achten Sie immer auf diese Unterscheidung, um unerwartete Fehler und Segmentierungsfehler zu vermeiden. Die Verwendung von Zeichenarrays für modifizierbare Zeichenfolgen ist im Allgemeinen sicherer als die Verwendung von Zeichenzeigern auf String -Literale.

Das obige ist der detaillierte Inhalt vonStrings in C zuweisen. 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