Frage

Die Ausgaben meine Zeit auf hochsprachiger es plötzlich fiel mir ein, dass ich nicht den Unterschied zwischen einem Char-Array und einem String nicht kannte. Ich denke, sie sind das Gleiche, aber nicht sicher. Ist da ein Unterschied? Ist es nur ein Char-Array mit einer gewissen Abstraktion?

War es hilfreich?

Lösung

ein Zeichenfeld ist einfach ein Array von Zeichen

ein String Datenstruktur, die verwendet ein Array von Zeichen

Einige String-Darstellungen verwenden, um einen Null-Terminator (wie C), andere verwenden Längenpräfixe

Andere Tipps

Ein String ist eine Abstraktion, sondern eine sequence von Zeichen. Es sagt nichts der Umsetzung. Wenn Sie eine String-Implementierung basiert auf einer verknüpften Liste von Zeichen erstellen wollte es nichts mehr im Wege stehen.

In einer Sprache wie C, gibt es kaum einen Unterschied -. Nur, dass eine C-Kette eine nullterminierte Reihe von Zeichen in aufeinanderfolgenden Adressen, die im Allgemeinen über einen Zeiger zugegriffen wird

In einer OOP-Sprache, ein String wird ein Objekt einiger String-Klasse sein. Dies wird wahrscheinlich die Daten in einem Zeichenfeld hält intern, aber Sie nicht wissen müssen. Ein Zeichen-Array kann nur ein einfaches Array sein, aber eine String-Klasse kann viele Operationen (Substrings, regex, usw.) auf Strings zur Verfügung stellen, wenn der Implementierer entscheidet.

habe ich zu lehren Programmierung, und das ist, wie ich verwenden, um dieses besondere Problem zu erklären.

Als erstes Fokus auf das, was die beiden Dinge haben gemeinsam : sowohl ein char-Array und eine Zeichenfolge bestehen aus einer Folge von Zeichen. Als sequence bedeutet, dass die Zeichen bestellt werden und dass sie aufgezählt werden können, zum Beispiel.

Jetzt konzentrieren sich auf, was jeder der zwei Dinge hinzufügen, in ihre besonderen andere Möglichkeiten, auf diese Gemeinsamkeiten.

char-Array fügt hinzu, was jeder Array bekannt ist hinzuzufügen:. Indizierung und Direktzugriff auf einzelne Elemente

string , auf der anderen Seite, fügt die Tatsache, dass die Folge von Zeichen als Ganze, was mit seinen eigenen Eigenschaften zu sehen ist. In einigen Implementierungen Erreichung dieses Mittels verändert die Art und Weise der Zeichen gespeichert sind (eine abschließende Null in C-Strings hinzufügen, zum Beispiel).

Dieser Ansatz (Blick auf den Gemeinsamkeiten, dann, wie Dinge von ihnen abweichen) hat in einer Vielzahl von Situationen als nützlich erwiesen.

Hope, das hilft.

In C diese sind fast die gleiche, wenn auch ein String wird am Ende ein zusätzliches Null-Zeichen hat.

In anderen Sprachen (Java, C # usw.), ein String ist ein Objekt, während ein Zeichen-Array ist ein Array von ... Zeichen (die Typen primitive Daten sind).

Normalerweise werden Strings mit Zeichen-Arrays implementiert.

Die Antwort zu einem gewissen Grad hängt davon ab, welche Sprache Ihr sprechen. In .NET / C # sind Welt Strings unveränderliche Objekte, während ein char-Array können Sie die Werte ändern sich leicht in dem Array hinzufügen /. Strings kann als char-Arrays in einem schreibgeschützten Weise behandelt werden, wie Sie die Zeichen in einem String iterieren können.

In der Zusammenfassung Ich denke, der größte Unterschied in ist, wie man mit ihnen arbeiten will. Sind Sie mit der Arbeit mit einem Stück Text zu wollen, sagen Sie eine Nachricht an einen Endbenutzer zu zeigen, oder suchen Sie mit einer Folge von Zeichen, einige Verarbeitung auf der Liste zu tun? Es ist alles eher subjektiv auf einem bestimmten Niveau.

String ist ein class in Java. So hat es zum Beispiel Attribute length. Also, wenn Sie für die Größe der Zeichenfolge fragen gibt es nur, dass statt dem Wert jedes Mal der Berechnung. Es auch andere Methoden z.B. indexOf, substring usw. zum Leben einfach machen und so muss man das nicht selbst tun.

A C-String intern wird durch Anordnung von Zeichen dargestellt mit dem '\ 0' am Ende, welches das Ende der Zeichenkette indiciates.

In C ++ gibt es einen String Containerklasse in string.h definiert, die einige typische String-Operationen liefert die Zeichenfolge zu manipulieren.

Es hängt von der Sprache. In C-ish Sprachen, sie sind so ziemlich synonym. Sie könnten der Unterschied Anspruch ist, dass „Strings“ einen impliziten Abschluss nul hat, aber das wäre Haarspalterei sein.

Fortran ist das andere Extrem. Es Zeichen-Arrays und Zeichenketten sind ganz verschiedene Typen mit unterschiedlichen Operationen zur Verfügung.

Ein String ist das Zeichenfeld von Null-Zeichen beendet, ‚\ 0‘

C, eine Zeichenfolge ist ein Array von Zeichen, die durch ein Null-Zeichen beendet (\ 0), aber

In C ++ ist eine Zeichenfolge, eine Klasse und wir verwenden die Aufgabe, und es gibt keine Null-Zeichen am Ende aber eine Reihe von Zeichen enthält, Null-Zeichen am Ende.

Auch wir können Operatoren mit dem String-Objekt in C ++ verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top