GARSIAKALBIS: Leiskite parašyti programą, kuri paragina dvi eilutes ir vartotoją tada ataskaitos ar tos stygos yra tas pats, ar ne tas pats. Aš jau pradėjau mums ne čia skambina printf du kartus ir skambina GetString du kartus, saugoti grąžą vertybės s ir t, atitinkamai. 

Dabar, mano instinktai palyginti šias dvi stygos būtų naudoti susipažinę lygybės operatorius - jei ai Lygu lygu k. Tada aš ruošiuosi eiti į priekį ir spausdinti iš "Jūs įvedėte tą patį! Kitur, jei tai ne tiesa, aš tiesiog ketina įvesti printf ("Jūs įvedėte skirtingi dalykai! 

Gana paprasta - Aš paprasčiausiai palyginant s prieš t, ir jei jie vienodi, spausdinti kiek. Leiskite sudaryti ir vykdyti šią programą. Padaryti palyginti 0. / Palyginti 0, ką nors pasakyti, labas, pasakyti, labas. 

Deja, programa mano aš įvedėte skirtingus dalykus, nors aš aiškiai įvedėte "labas" taip pat, abu kartus. Dabar, kodėl tai galėtų būti? 

Na, atrodo, kad visa tai laikas, siūlai buvo šiek tiek daugiau sudėtingesnis nei simbolių seka po gaubtu. Iš tikrųjų, eilutė yra žymeklis arba adresas, konkrečiai adresas pirmojo požymio, kad seka simbolių. 

Ir todėl, kai mes lyginame s prieš t su vienodo lygybės ženklą, mes iš tikrųjų klausia, ar šis adresas lygūs lygūs šiuo adresu? Ir tai nebus atveju, jei vartotojas turi įvesti dviejų skirtingų styginiams ir mes vadinami GetString du kartus juos gauti, nes atmintis kad GetString naudoja laikyti pirmas Styga gali būti čia RAM, bet atmintis, GetString naudoja laikyti antra eilutė vyksta būti čia RAM. Ir, žinoma, po to, šie du gabaliukus atmintis turi skirtingus adresus jų pirmųjų simbolių. 

Taigi yra s lygios lygios t? Na, ne. Jei s ir t yra nukreipta į skirtingas gabaliukus atminties, nes jie būtų per skambina GetString du kartus, jie ne, iš tiesų, bus tas pats. Taigi atrodo, kad atvejis, kad į palyginti dvi eilutes intuityvus Taip, kad mes tikimės, personažas pobūdžio, mes turime kitą techniką apskritai.