SPEAKER: Kirjoitetaan ohjelma, joka kysyy käyttäjältä kaksi merkkijonoa ja raportoi sitten ovatko nämä jouset ovat samat tai ei ole sama. Olen jo alkanut meidät täällä kutsuvan printf kahdesti ja kutsuvan GetString kahdesti, varastointi paluu arvot s ja t, vastaavasti. Nyt minun vaistoni vertailua jouset olisi käyttää tuttuja yhtäsuuruusoperaattorin - jos s vastaa vastaa t. Sitten aion mennä eteenpäin ja tulostaa out "Kirjoitit sama asia! Else, jos se ei ole totta, olen yksinkertaisesti menossa kirjoittaa printf ("Kirjoitit eri asioita! Melko yksinkertainen - Olen yksinkertaisesti vertaamalla s vastaan t, ja jos he tasa-arvoisia, tulostamalla niin paljon. Katsotaanpa kääntää ja ajaa tämän ohjelman. Tee vertailla 0. / Vertaa 0, sanoa jotain, hei, sanoa jotain, hei. Valitettavasti ohjelma luulee olen kirjoitetaan eri asioita, vaikka olen selvästi kirjoittanut "hei" samalla tavalla molemmilla kerroilla. Nyt, miksi se voisi olla? No, käy ilmi, että kaikki tämän aika, jouset ovat olleet hieman monimutkaisempi kuin merkkijono alla huppu. Todellisuudessa merkkijono on osoitin tai osoite, nimenomaan osoite ensimmäisen merkin siitä, että merkkijono. Ja niin kun vertaamme s vastaan ​​t kanssa yhtä yhtäläisyysmerkki, olemme oikeastaan ​​kysyä, on tämä osoite equal equal tähän osoitteeseen? Ja se ei tule olemaan, jos käyttäjä on kirjoittanut kahdella eri jousille ja me olemme kutsuneet getString kahdesti saada niitä, koska muisti että getString käyttää tallentaa ensin merkkijono voi olla täällä RAM, mutta muisti, joka getString käyttää tallentaa Toinen merkkijono on menossa olla täällä RAM. Ja tietenkin, niin nämä kaksi paloina muisti on eri osoitteet heidän ensimmäinen merkkiä. Joten on s yhtä yhtä t? No, no. Jos s ja t osoittavat eri paloina muistia, koska ne olisivat by soittamalla getString kahdesti, ne eivät ole, Itse asiassa, tulee olemaan sama. Niin se näyttää olevan niin, että sen vertailla kahta jousille intuitiivinen siten, että odotamme, merkin merkki, me tarvitsemme toinen tekniikka kokonaan.