>> SPRECHER: Lassen Sie uns ein Programm schreiben, dass fordert den Benutzer für zwei Zeichenfolgen und
berichtet dann, ob diese Zeichenfolgen sind gleich oder nicht gleich sind.
Ich habe bereits hier von uns begann zweimaligen Aufruf printf und Aufrufen
GetString zweimal, Speichern des Rück Werte in s bzw. t.
>> Nun, meine Instinkte, diese beiden vergleichen Saiten wäre das vertraute zu bedienen
Gleichheitsoperator -
wenn s gleich t entspricht.
Dann werde ich nach vorne gehen und drucken out "Sie gaben die gleiche Sache!
Else, bin ich, wenn das ist einfach nicht wahr printf geben werde ("Sie getippt
verschiedene Dinge!
>> Ziemlich einfach -
Ich bin einfach vergleichen s gegen t, und wenn sie gleich sind,
Drucken Sie so viel.
Lassen Kompilieren und Ausführen dieses Programms.
Machen Sie vergleichen 0. / Vergleichen 0, etwas sagen, hallo,
etwas sagen, hallo.
>> Leider denkt, das Programm habe ich eingegeben verschiedene Dinge, auch wenn ich
klar typisiert "Hallo" die gleiche Weise beide Male.
Nun, warum könnte das sein?
>> Nun stellt sich heraus, dass dies alles Zeit haben die Saiten ein bisschen mehr gewesen
komplexer als eine Folge von Zeichen unter der Haube.
In Wirklichkeit ein String ist ein Zeiger oder Adresse, nämlich die Adresse
das erste Zeichen, dass Folge von Zeichen.
>> Und so, wenn wir vergleichen, s gegen t mit dem Gleichheitszeichen gleich, wir sind
tatsächlich fragen, ist diese Adresse gleich gleich an diese Adresse?
Und das wird nicht der Fall sein, wenn der Benutzer in zwei verschiedenen typisierten
Saiten und wir haben zweimal aufgerufen GetString um sie zu bekommen, weil der Speicher
dass GetString verwendet, um den ersten zu speichern String könnte hier im RAM, aber die
Speicher, der GetString verwendet, um zu speichern der zweite String wird
hier im RAM sein.
Und dann natürlich diese beiden Stücke von Speicher unterschiedliche Adressen für
ihre erste Zeichen.
>> So ist s gleich gleich t?
Nun, nein.
Wenn s und t sind verschiedenen Zeige Stücke der Erinnerung, wie sie von sein
Aufruf GetString zweimal, sind sie nicht, In der Tat würde die gleiche sein.
So scheint es so zu sein, dass, um Vergleich von zwei Zeichenfolgen in der intuitiven
Weise, die wir erwarten, Charakter für Charakter, brauchen wir eine andere Technik
insgesamt.