So verwenden Sie Zeiger und Streicher in C-Programmierung

Die Programmiersprache C fehlt eine String-Variable, aber es macht den char-Array haben, die effektiv die gleiche Sache. Als Array kann eine Zeichenfolge in C völlig verdreht, angezogen werden, und unter Verwendung von Zeigern missbraucht. Es ist eine viel interessantere Thema als mit numerischen Arrays durcheinander.

Wie Zeiger zu verwenden, um eine Zeichenfolge anzuzeigen

Sie sind am ehesten vertraut mit einer Zeichenfolge in C angezeigt wird, wahrscheinlich, indem entweder die puts () oder printf () Funktion. Streicher, kann auch eine Zeit, ein Zeichen, indem sie durch ein Array trotten angezeigt werden.

HALLO, STRING

# include int main () {char Probe [] = "Woher kommt mir Hilfe? n" -int index = 0-while (Probe [index] = ' 0'!) {putchar (Probe [index]) - Index ++ -} return (0) -}

Der Code gezeigt in Hallo, String ist völlig legitim C-Code, gültig, ein Programm zu erstellen, das eine Zeichenfolge anzeigt. Aber es spielt keine Zeiger verwenden, nicht wahr?

Übung 1: Ändern Sie den Quellcode von Hallo, String, ersetzen Array-Notation mit Zeigernotation. Beseitigen Sie die Indexvariable. Sie müssen erstellen und eine Zeigervariable initialisieren.

Die Bewertung der while-Schleife in Hallo, String ist überflüssig. Das Null-Zeichen wertet als falsch. So konnte die Auswertung neu geschrieben werden als

während (Probe [index])

Solange das Array-Element durch Probe [index] verwiesen kein Null-Zeichen ist, dreht sich die Schleife.

Übung 2: Bearbeiten Sie die Einschätzung der While-Schleife in Ihre Lösung für eine Aufgabe 1, die redundante Vergleich zu beseitigen.

Übung 3: Weiter auf Ihren Code zu arbeiten, und dieses Mal die Aussagen in der while-Schleife zu eliminieren. Platzieren Sie die Action in der Bewertung durch die while-Anweisung. Aus Gründen der Bezugnahme, kehrt die putchar () Funktion das Zeichen, das angezeigt wird.

Wie eine Zeichenfolge zu erklären, durch einen Zeiger mit

Hier ist eine beängstigende Trick, den Sie ziehen können Zeiger verwenden, eine, die mit einer Schiffsladung von Vorsicht kommt. Betrachten wir ein Pointer kündigt einen String.

Ein Zeiger kündigt eine STRING

# include int main () {char * Probe = "Woher kommt mir Hilfe? n" -Während (putchar (* Probe ++)) - return (0) -}

In einem Zeiger einen String verkündet, dass die Zeichenfolge angezeigt ist durch die Initialisierung eines Zeigers erstellt. Es ist ein Konstrukt, das seltsam aussieht, aber es ist etwas, das man oft in C-Code Zeuge, vor allem mit Streichern. (Sie können nicht an diese Konvention verwenden, um ein numerisches Array zu initialisieren.)

Übung 4: Kopieren Sie den Quellcode von einem Zeiger einen String im Editor verkündet. Erstellen und ausführen.

Die Schiffsladung von Vorsicht in einem Zeiger kündigt einen String, und Sie zu jeder Zeit einen Zeiger verwenden, um direkt einen String deklarieren, ist, dass die Zeigervariable nicht manipuliert werden kann, oder aber die Zeichenfolge verloren.

Zum Beispiel in einem Zeiger einen String verkündet, die Sample Variable wird in Zeile 7 zu Schritt durch den Strang als Teil des putchar () -Funktion verwendet. Hoppla. Wenn Sie wantto Sample später im Code, würde es keinen Verweis mehr den Anfang des Strings.

Wenn eine Zeichenfolge erklärt durch einen Zeiger verwenden, verwirren sie nicht mit der Zeigervariable an anderer Stelle im Code.

Die Lösung ist der Zeigeranfangsadresse speichern oder einfach einen zweiten Zeiger verwenden, um auf die Saite zu arbeiten.

Übung 5: Befestigen Sie den Code in einem Zeiger einen String verkündet, so dass die Sample Variablenwert wird vor der while-Schleife läuft gespeichert und dann später wieder hergestellt. Hinzufügen eines Puts (Probe) Anweisung an den Code nach der while-Schleife ausgeführt wird getan, um zu beweisen, dass die ursprüngliche Adresse der Variablen wiederhergestellt wird.

Wie zu sortieren Strings

Unter was wissen Sie über in der C-Sprache sortieren, können Sie wahrscheinlich eine anständige String-Sortierprogramm herstellt. Oder zumindest können Sie erklären, wie es gemacht wird. Das ist großartig! Aber es ist eine Menge Arbeit.

Was ist besser, wenn es Strings Sortierung kommt, ist nicht die Saiten überhaupt zu sortieren. Nein, stattdessen sortieren Sie ein Array von Zeigern die Saiten zu verweisen. Sortieren von Strings, zeigt erste Versuch ein Beispiel.

SORTIERANLAGEN STRINGS, erster Versuch

# include int main () {char * Obst [] = { "Aprikose", "Banane", "Ananas", "Apfel", "Kaki", "Birne", "blueberry"} - char * temp-int a, b, x-for (a = 0-alt; 6-a ++) für (b = a + 1-BLT; 7-b ++) if (* (Obst + a)> * (Obst + b)) {temp = * (Obst + a) - * (Obst + a) = * (Obst + b) - * (Obst + b) = temp-} for (x = 0-XLT; 7-x ++) puts (Frucht [x]) - (0) zurückzukehren -}

Übung 6: Geben Sie den Quellcode von Sortierung Streicher, erster Versuch in Ihren Editor. Erstellen und ausführen, um sicherzustellen, dass die Saiten richtig sortiert sind.

Nun, es war wahrscheinlich nicht funktionieren. Es kann, aber wenn die Liste sortiert ist oder in irgendeiner Weise verändert, es ist eine unbeabsichtigte Folge und auf jeden Fall nicht wiederholbar.

Das Problem ist in der Linie 19. Sie keine Strings vergleichen kann mit Hilfe der Operator>. Sie können einzelne Zeichen zu vergleichen, und Sie könnten dann die Liste auf jene Zeichen basierend sortieren, aber die meisten Menschen bevorzugen Worte über ihre gesamte Länge sortiert, nicht nur das erste Zeichen.

Übung 7: Ändern Sie den Quellcode, und verwenden Sie die Funktion strcmp () Strings zu vergleichen, um zu bestimmen, ob sie ausgetauscht werden müssen.

Menü