>> SPEAKER: Scriviamo un programma che richiede all'utente due stringhe e
quindi di segnalare se quelle stringhe sono uguali o non uguali.
Ho già ci cominciato qui da chiamare printf due volte e chiamando
GetString due volte, memorizzare il ritorno valori di s e t, rispettivamente.
>> Ora, il mio istinto di confrontare questi due stringhe sarebbe quella di utilizzare il familiare
uguaglianza operatore -
se s è uguale uguale a t.
Poi ho intenzione di andare avanti e di stampa out "È stato digitato la stessa cosa!
Altrimenti, se questo non è vero, io sono semplicemente andando a digitare printf ("Hai digitato
cose diverse!
>> Abbastanza semplice -
Sto semplicemente confrontando s contro t, e se sono uguali,
la stampa di tanto.
Facciamo compilare ed eseguire questo programma.
Fai Confronta 0. / Confrontare 0, dire qualcosa, ciao,
dire qualcosa, ciao.
>> Purtroppo, il programma pensa che io ho digitato cose diverse, anche se
chiaramente digitato "ciao" l' Allo stesso modo entrambe le volte.
Ora, perché potrebbe essere?
>> Beh, si scopre che tutto questo tempo, le stringhe sono stati un po 'più
complesso di una sequenza di caratteri sotto la cappa.
In realtà, una stringa è un puntatore o un indirizzo, in particolare l'indirizzo
del primo carattere in quel sequenza di caratteri.
>> E così quando mettiamo a confronto s contro t con il segno di uguale uguale, siamo
in realtà chiedendo, è questo indirizzo uguale uguale a questo indirizzo?
E non sta andando essere il caso se l'utente ha digitato in due diversi
stringhe e abbiamo chiamato GetString due volte per farli, perché la memoria
GetString che utilizza per memorizzare il primo stringa potrebbe essere qui in RAM, ma l'
memoria che GetString utilizza per memorizzare la seconda stringa sta
di essere qui in RAM.
E, naturalmente, poi, quei due pezzi di memoria hanno indirizzi diversi per
dai primi caratteri.
>> Così è s uguale uguale a t?
Beh, no.
Se s e t puntano a diversi blocchi di memoria, in quanto sarebbero da
chiamando GetString due volte, non lo sono, infatti, sarà il medesimo.
Così sembra essere il caso che a confrontare due stringhe in intuitivo
modo che ci aspettiamo, dei caratteri per carattere, abbiamo bisogno di un'altra tecnica
tutto.