Heim >Backend-Entwicklung >C++ >Was ist der Unterschied zwischen „char a[] = „string';' und „char *p = „string';' in C?

Was ist der Unterschied zwischen „char a[] = „string';' und „char *p = „string';' in C?

DDD
DDDOriginal
2024-12-17 19:56:11700Durchsuche

What's the Difference Between `char a[] =

Unterschied zwischen „char a[] = „string“;“ und "char *p = "string";"

In der Programmierung können Variablen entweder Zeiger oder Arrays sein. Bei der Deklaration von Variablen unterscheidet sich die Syntax für Zeiger und Arrays. Das Verständnis des Unterschieds zwischen den beiden ist entscheidend für die korrekte Bearbeitung von Daten.

char a[] = "string";

Diese Codezeile erstellt ein Array großer Zeichen genug, um die Zeichenfolge „string“ zusammen mit ihrem Nullterminator zu speichern. Das Array „a“ ​​wird mit den Elementen des Strings „string“ initialisiert. Ein Array kann später geändert werden, und seine Größe ist zur Kompilierungszeit bekannt, sodass der Operator „sizeof“ verwendet werden kann, um seine Länge zu bestimmen.

char *p = „string“;

Diese Codezeile erstellt einen Zeiger namens „p“, der auf die Adresse der Zeichenfolge „string“ zeigt. Der Zeiger „p“ kann nicht geändert werden, die Zeichenfolge, auf die er zeigt, jedoch schon, was zu undefiniertem Verhalten führt.

Vergleich:

  • Speicherung: Arrays belegen kontinuierlichen Speicherplatz, während Zeiger die Adresse eines Speichers speichern Speicherort.
  • Änderung: Arrays ermöglichen Änderungen an ihren Elementen, während Zeiger, die auf Zeichenfolgen zeigen, nicht geändert werden sollten, da sie sich häufig im Nur-Lese-Speicher befinden.
  • Größe:Arrays haben eine feste Größe, die zur Kompilierzeit bestimmt wird, während die Größe der Zeichenfolge, auf die ein Zeiger zeigt, mithilfe von Funktionen wie bestimmt werden muss „strlen()“, da „sizeof“ die Größe des Zeigers selbst zurückgibt.
  • Verwendung: Verwenden Sie Arrays für Daten, die geändert werden müssen, und Zeiger für Daten, die konstant sind und sollten nicht geändert werden.

Hinweis: Das Beispiel in der Frage enthält einen Tippfehler, da „?“ ist in diesem Zusammenhang kein gültiger Operator. Es wurde angenommen, dass es sich bei der beabsichtigten Frage um den Unterschied zwischen Arrays und Zeigern handelte.

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen „char a[] = „string';' und „char *p = „string';' in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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