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.