>> SPEAKER: Să scrie un program care solicită utilizatorului pentru două șiruri și
apoi raportează dacă aceste siruri de caractere sunt la fel sau nu identice.
Am ne-am început deja de pe aici de apel printf de două ori și de asteptare
GetString de două ori, stocarea revenirea valori în s și t, respectiv.
>> Acum, instinctele mele pentru a compara aceste două siruri de caractere ar fi utilizarea familiar
operator de egalitate -
dacă s egal este egal cu t.
Apoi, am de gând să merg mai departe și de imprimare out "Ai tastat același lucru!
Altfel, dacă nu e adevărat, eu sunt pur și simplu O să tip printf ("Ai tastat
lucruri diferite!
>> Destul de simplu -
Eu pur și simplu e comparat împotriva t, iar în cazul în care acestea sunt egale,
imprimarea la fel de mult.
Să compila și rula acest program.
Face comparație 0. / Compara 0, spune ceva, salut,
spune ceva, salut.
>> Din păcate, programul crede că am tastat lucruri diferite, chiar dacă am
tastat în mod clar "hello" același mod în ambele cazuri.
Acum, de ce ar fi asta?
>> Ei bine, se pare că toate acestea timp, siruri de caractere au fost un pic mai mult
complexă decât o secvență de caractere sub capota.
În realitate, un șir este un pointer sau o adresa, în mod specific adresa
a primului caracter în care secvență de caractere.
>> Așa că atunci când ne-am compara s împotriva t cu semnul egal egal, suntem
de fapt cere, este această adresă irilor la această adresă?
Și că nu va fi cazul dacă utilizatorul a tastat în două diferite
siruri de caractere și le-am numit getString de două ori pentru a le obține, pentru că memoria
care getString utilizează pentru a stoca primul șir ar putea fi aici în RAM, dar
memorie care getString utilizează pentru a stoca al doilea șir se întâmplă
să fiu aici în RAM.
Și, bineînțeles, atunci, aceste două bucăți de memorie au adrese diferite pentru
foarte primele caractere.
>> Deci, este s egal egal cu t?
Ei bine, nu.
În cazul în care s și t sunt orientate la diferite bucăți de memorie, cum ar fi de
apel getString de două ori, ei nu sunt, în fapt, va fi la fel.
Deci, se pare să fie cazul în care a compara doua siruri de caractere în intuitiv
astfel încât ne așteptăm, de caractere pentru caracter, avem nevoie de o alta tehnica
totul.