>> SPEAKER: Lad os skrive et program, beder brugeren om to strygere og
derefter rapporterer om disse strings er de samme eller ikke det samme.
Jeg har allerede startede os her ved kalder printf to gange og ringer
GetString to gange, lagring tilbagevenden værdier i s og t, hhv.
>> Nu, at mine instinkter sammenligne disse to strenge ville være at bruge den velkendte
lighed operatør -
hvis s er lig lig t.
Så jeg har tænkt mig at gå videre og udskrive out "Du har skrevet det samme!
Else, hvis det ikke er sandt, jeg er simpelthen kommer til at skrive printf ("Du har indtastet
forskellige ting!
>> Forholdsvis ligetil -
Jeg blot at sammenligne s mod t, og hvis de er lige,
udskrivning ud så meget.
Lad os kompilere og køre dette program.
Foretag sammenligne 0. / Sammenligne 0, sige noget, hallo,
sige noget, hej.
>> Desværre programmet tror jeg har indtastet forskellige ting, selvom jeg
tydeligt skrevet "hello" den samme måde begge gange.
Nu, hvorfor kan det være?
>> Tja, det viser sig, at alt dette tid har strenge været lidt mere
kompleks end en sekvens af tegn under hætten.
I virkeligheden er en streng en pegepind eller en adresse, specifikt adresse
det første tegn på, at sekvens af tegn.
>> Og så når vi sammenligner s mod t med lige lighedstegnet, er vi
faktisk beder, er denne adresse lig lige til denne adresse?
Og det kommer ikke til at være tilfældet, hvis brugeren har indtastet i to forskellige
strygere og vi har kaldt getString to gange at få dem, fordi hukommelsen
at getString bruger til at lagre den første streng kunne være her i RAM, men den
hukommelse, getString bruger til at lagre den anden streng går
at være her i RAM.
Og selvfølgelig, så de to bidder af hukommelse har forskellige adresser for
deres allerførste tegn.
>> Så er s lig lige til t?
Nå, nej.
Hvis s og t peger på forskellige bidder af hukommelsen, da de ville være med
ringer getString to gange, de ikke er, i virkeligheden, vil være den samme.
Så det lader til at være tilfældet, at til sammenligne to strenge i den intuitive
måde, at vi forventer, karakter for karakter, har vi brug en anden teknik
helt.