>> 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.