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.