>> SPEAKER: Ni skribi programon kiu stimulanta la uzanton dum du kordoj kaj
tiam informu cxu tiuj kordoj estas samaj aŭ ne la sama.
Mi jam komencis ni for ĉi tien nomante printf dufoje kaj vokas
GetString dufoje, stokante la reveno valorojn en s kaj t, respektive.
>> Nun, mia instinkto kompari tiujn du kordoj estus uzi la familiaran
egaleco operatoro -
se s egalas egalas t.
Tiam mi tuj iros antaŭen kaj printi el "Vi tajpis la saman aferon!
Alie, se tio ne estas vera, mi simple tuj tajpi printf ("Vi tajpis
malsamaj aferoj!
>> Sufiĉe simpla -
Mi simple komparante s kontraŭ t, kaj se ili estas egalaj,
presi el tiel.
Ni tradukigi kaj ruli tiun programon.
Faru kompari 0. / Kompari 0, diri ion, saluton,
diri ion, saluton.
>> Bedaŭrinde, la programo pensas mi havas tajpitaj malsamaj aferoj, kvankam mi
klare tajpita "saluton" la sammaniere ambaŭ fojojn.
Nu, kial povus esti?
>> Nu, tio rezultas ke ĉio ĉi tempo, kordoj estis iom pli
kompleksa ol vico de signoj sub la kapuĉo.
En realo, ŝnuro estas montrilo aŭ adreso, specife la adreso
de la unua gravulo en tiu vico de signoj.
>> Kaj tial, kiam oni komparas s kontraŭ t kun la egala egalsigno, ni estas
reale demandante, estas jena adreso egala egala al tiu adreso?
Kaj tio ne tuj estos la kazo, se la uzanto tajpas en du malsamaj
kordoj kaj ni nomas GetString dufoje por atingi ilin, ĉar la memoro
ke GetString uzas por stoki la unua kordoj povus esti tie en RAM, sed la
memoro kiun GetString uzas por stoki la duan ŝnuron tuj
esti ĉi tie en RAM.
Kaj kompreneble, do tiuj du pecoj de memoro havas malsamajn direktojn por
iliaj unuaj signoj.
>> Do estas s egalaj egala al t?
Nu, ne.
Se s kaj t estas indikante malsamajn pecoj de la memoro, kiel ili estus por
nomante GetString dufoje, ili ne estas, fakte, tuj estos la sama.
Do ĝi ŝajnas esti la kazo, ke al komparu du kordoj en la intuicia
vojo, ke ni atendas, karaktero por karaktero, ni bezonas alian teknikon
aro.