lima-city: Webhosting, Domains und Cloud
1 Pluspunkt 0 Minuspunkte

Was ist der Unterschied ob ich einen String so

char *str = "Hello world";

oder so

char str[] = "Hello world";

erstelle? Ist da überhaupt ein Unterschied außer dass das eine ein Pointer ist?

von  

1 Antwort

0 Pluspunkte 0 Minuspunkte

Es gibt einen sehr subtilen aber ausschlaggebenden Unterschied zwischen den beiden Deklarationen:      

char *str = "Hello";  

Diese Deklaration erstellt einen Zeiger auf ein Zeichen (das erste) und initialisiert den Zeiger so, dass er auf eine konstante Zeichenkette "Hello" zeigt. Das bedeutet, dass Sie den Inhalt der Zeichenkette nicht ändern können, da sie im Speicher als konstant betrachtet wird. Sie können den Zeiger jedoch ändern, um auf eine andere Zeichenkette zu zeigen.      

char str[] = "Hello";  

Diese Deklaration erstellt ein Array von Zeichen und initialisiert das Array mit der Zeichenkette "Hello". Im Gegensatz zur ersten Deklaration können Sie den Inhalt dieses Arrays ändern allerdings wird die Größe des Arrays automatisch auf die Länge der initialisierten Zeichenkette gesetzt wird, und Sie können den Pointer str nicht auf eine andere Zeichenkette zeigen lassen.

Bei der ersten Deklaration können Sie den Pointer einfach auf eine andere Speicheradresse zeigen lassen.

char *str = "Hello world";
str = "Hello moon"; // modifikation des pointer

Bei der zweiten müssen Sie den neuen Inhalt an die Speicherstelle kopieren.

char str[] = "Hello world";
strcpy(str, "Hello moon");
von  
Diese Community basiert auf dem Prinzip der Selbstregulierung. Beiträge werden von Nutzern erstellt, bewertet und verbessert – ganz ohne zentrale Moderation.

Wer hilfreiche Fragen stellt oder gute Antworten gibt, sammelt Punkte. Mit steigender Punktzahl erhalten Mitglieder automatisch mehr Rechte, zum Beispiel

  • Kommentare verfassen
  • Fragen und Antworten bewerten
  • Themen von Fragen bearbeiten
  • Fragen, Antworten und Kommentare bearbeiten
  • Inhalte ausblenden

So entsteht eine Plattform, auf der sich Qualität durchsetzt – getragen von einer engagierten Gemeinschaft.

2.3k Fragen

2.8k Antworten

265 Kommentare

14 Nutzer