>> 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.