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.