>> Ettekandja: Olgem kirjutada programm, mis küsib kasutajalt kaks stringi ja
siis teatab, kas need stringid on samad või erinevad.
Olen juba hakanud meid siin kutsudes printf kaks korda ja helistades
GetString kaks korda, säilitades tagastamine väärtused s ja t võrra.
>> Nüüd, mu instinktid võrrelda neid kahte stringid oleks kasutada tuttav
võrdõiguslikkuse operaator -
kui s võrdub võrdub t.
Siis ma lähen edasi minna ja print out "Sa kirjutasid sama asja!
Sest kui see pole tõsi, ma olen lihtsalt läheb tüüp printf ("Sa kirjutasid
erinevaid asju!
>> Üsna lihtne -
Ma lihtsalt võrrelda s vastu t, ja kui nad on võrdsed,
väljatrükk nii palju.
Olgem kompileerida ja käivitada see programm.
Tee võrrelda 0 /. Võrrelda 0, midagi öelda, tere,
midagi öelda, tere.
>> Kahjuks programm arvab, et ma olen kirjutada erinevaid asju, kuigi ma
selgelt kirjutatud "tere" samamoodi nii korda.
Nüüd, miks see võiks olla?
>> Noh, tuli välja, et see kõik aeg, stringid olnud natuke rohkem
keerulisem kui märgijada all kapuuts.
Tegelikkuses string on viit või aadress, konkreetselt aadress
on esimene märk, et märgijada.
>> Ja kui me võrdleme s vastu t Võrdsete võrdusmärk, me oleme
tegelikult küsida, on see aadress võrdne võrdne sellele aadressile?
Ja see ei kavatse olla, kui kasutaja on trükitud kahes erinevas
stringid ja me oleme kutsutud getString korda et saada neid, sest mälu
et getString kasutab salvestada esimese string võib olla siin RAM, kuid
mälu getString kasutab salvestada teine ​​string läheb
siin olla RAM.
Ja muidugi, siis need kaks tükke mälu on erinevad aadressid
oma esimest tähemärki.
>> Nii on s võrdne võrdne t?
Noh, ei.
Kui s ja t on suunatud erinevate tükkideks mälu, nagu nad oleks järgi
kutsudes getString kaks korda, nad ei ole, Tegelikult saab olema sama.
Niisiis näib olevat nii, et kuni võrrelda kahte stringi intuitiivne
nii, et me eeldame, hieroglüüf iseloomu, peame teine ​​tehnika
täielikult.