>> Gjuha: Le të shkruaj një program që bën të përdoruesit për dy vargjet dhe
pastaj raporton nëse këto vargjet janë të njëjta ose jo njëjtë.
Unë kam filluar të na jashtë këtu me duke e quajtur printf dy herë dhe duke e quajtur
GetString dy herë, ruajtjen e kthimit Vlerat në s dhe t, respektivisht.
>> Tani, instinktet e mia për të krahasuar këto dy vargjet do të ishte për të përdorur të njohur
Operatori barazia -
në qoftë se s është e barabartë e barabartë me t.
Atëherë unë jam duke shkuar për të shkuar përpara dhe të shtypura out "Ju shtypur të njëjtën gjë!
Por në rast se kjo nuk është e vërtetë, unë jam thjesht do të tipit printf ("Ju shtypur
gjëra të ndryshme!
>> Mjaft i hapur -
Unë jam thjesht duke krahasuar s kundër t, dhe në qoftë se ata janë të barabartë,
shtypjen nga sa më shumë.
Le të përpilojnë dhe të drejtuar këtë program.
Bëni të krahasuar 0. / Të krahasuar 0, thonë diçka, hello,
thonë diçka, përshëndetje.
>> Për fat të keq, programi mendon se unë kam shtypur gjëra të ndryshme, edhe pse unë
shtypur në mënyrë të qartë "hello" njëjtën mënyrë dy herë.
Tani, pse mund që të jetë?
>> E pra, ajo rezulton se e tërë kjo kohë, vargjet kanë qenë pak më shumë
komplekse se një sekuencë e karaktere nën kapuç.
Në realitet, një varg është një tregues ose një adresa, konkretisht adresa
të karakterit të parë në se rend të karaktereve.
>> Dhe kështu që kur krahasojmë s kundër t me shenjë të barabartë të barabartë, ne jemi
në të vërtetë duke i kërkuar, është kjo adresë barabartë barabartë me këtë vendndodhje?
Dhe kjo nuk do të jetë rasti nëse përdoruesi ka shtypur në dy të ndryshme
vargjet dhe ne kemi quajtur getString dy herë për të marrë ato, sepse kujtesës
që getString përdor për të ruajtur e parë string mund të jetë këtu në RAM, por
kujtesës që getString përdor për të ruajtur string dytë do
që jam këtu në RAM.
Dhe sigurisht, atëherë, këto dy copa kujtesës kanë adresa të ndryshme për
karakteret e tyre të parë.
>> Pra, është e barabartë e barabartë me t?
E pra, nuk ka.
Nëse s dhe t janë treguar të ndryshme chunks e kujtesës, si ata do të jenë nga
duke e quajtur getString dy herë, ata nuk janë, në të vërtetë, do të jenë të njëjta.
Pra, kjo duket të jetë rasti që të krahasohen dy vargjet në intuitiv
mënyrë që ne presim, karakter për karakter, ne kemi nevojë për një tjetër teknikë
krejt.