>> Speak: Låt oss skriva ett program som uppmanar användaren att två strängar och
sedan rapporterar om dessa strängar är samma eller inte samma.
Jag har redan börjat oss här av ringer printf två gånger och ringer
GetString två gånger, lagra retur värden i s-och t, ​​respektive.
>> Nu, mina instinkter en jämförelse strängar skulle vara att använda det välbekanta
jämlikhet operatören -
Om s är lika med lika t.
Då kommer jag att gå vidare och skriva ut ut "Du skrev samma sak!
Annars, om det inte är sant, jag är helt enkelt kommer att skriva printf ("Du skrev
olika saker!
>> Ganska okomplicerad -
Jag är helt enkelt att jämföra er mot t, och om de är lika,
skriva ut så mycket.
Låt oss kompilera och köra programmet.
Gör jämför 0. / Jämföra 0, säga något, hej,
säga något, hej.
>> Tyvärr tror det program jag har skrivit olika saker, även om jag
tydligt skrivit "hej" med samma sätt båda gånger.
Nu, varför skulle det vara?
>> Tja, visar det sig att allt detta tid, har strängar varit lite mer
komplex än en sekvens av tecken under huven.
I verkligheten är en sträng en pekare eller en adress, specifikt adressen
för det första tecknet i det sekvens av tecken.
>> Och så när vi jämför s mot t med likhetslikhetstecken, vi är
faktiskt frågar, är denna adress lika lika med denna adress?
Och det kommer inte att vara fallet om användaren har matat in i två olika
strängar och vi har kallat GetString två gånger för att få dem, eftersom minnet
att GetString använder för att lagra den första sträng kan vara här i RAM, men det
minne som GetString använder för att lagra den andra strängen kommer
att vara här i RAM.
Och naturligtvis då, dessa två bitar av minnet har olika adresser för
deras allra första tecknen.
>> Så är s lika lika till t?
Tja, nej.
Om s och t är riktade till olika bitar av minnet, eftersom de skulle vara med
ringer GetString två gånger, är de inte, i själva verket kommer att vara densamma.
Så det verkar vara så att till jämföra två strängar i den intuitiva
sätt som vi förväntar oss, tecken för karaktär, behöver vi en annan teknik
helt och hållet.