SPEAKER: Pieņemsim uzrakstīt programmu, kas liek lietotājam divām stīgām un Pēc tam ziņo, vai šie stīgas ir vienādi vai nav vienādi. Esmu jau sācis mums off šeit zvanot printf divreiz un aicinot GetString divreiz, uzglabājot atgriešanos vērtības s un t, attiecīgi. Tagad, mani instinkti, lai salīdzinātu šos divus stīgas būtu izmantot pazīstami vienlīdzība operators - ja s vienāds vienāds t. Tad es iešu uz priekšu un izdrukāt out "Tu ievadījis pats! Cits, ja tas nav taisnība, es esmu vienkārši gatavojas rakstīt printf ("Jūs drukāti dažādas lietas! Diezgan vienkārši - Es esmu vienkārši salīdzinot s pret t, un, ja viņi ir vienādi, izdrukāt tik daudz. Pieņemsim apkopot un palaist šo programmu. Padarīt salīdzināt 0. / Salīdzinātu 0, kaut ko pateikt, hello, pateikt kaut ko, sveiki. Diemžēl programma domā, ka es esmu drukāti dažādas lietas, kaut arī es skaidri rakstīts "hello" Tāpat abas reizes. Tagad, kāpēc varētu būt? Nu, izrādās, ka tas viss laiks, stīgas ir nedaudz vairāk Komplekss nekā rakstzīmju secību zem motora pārsega. Patiesībā, virkne ir rādītājs, vai adrese, īpaši adresi pirmā rakstura ka rakstzīmju secība. Un tad, kad mēs salīdzinām s pret t ar vienādības vienādības zīmi, mēs esam faktiski jautā, vai šī adrese vienāda vienādam ar šo adresi? Un tas nav būs gadījumā, ja lietotājs ir ievadījis divās dažādās stīgas, un mēs esam sauc GetString divreiz , lai iegūtu to, ka atmiņas ka GetString izmanto, lai saglabātu pirmo virkne varētu būt šeit RAM, bet atmiņa, kas GetString izmanto, lai saglabātu otro string notiek būt šeit RAM. Un, protams, tad šie divi gabalos Atmiņas ir dažādas adreses to ļoti pirmās rakstzīmes. Tā ir s vienāds vienāds ar t? Nu, nē. Ja s un t ir vērsti uz dažādām gabalos atmiņas, kā tas būtu, ko zvana GetString divreiz, viņi nav, Faktiski, būs vienādi. Tātad tas, šķiet, ir gadījums, ka, lai salīdzināt divas virknes intuitīvu veids, kā mēs sagaidām, hieroglifs raksturu, mums ir nepieciešams citu tehniku vispār.