演講嘉賓:讓我們寫一個程序, 提示輸入兩個字符串和用戶 然後報告是否這些字符串 是相同的或不相同的。 我已經開始我們在這裡下車了 調用printf的兩次調用 GetString引發該異常兩次,存儲返回 在s和t,價值分別。 現在,我的直覺來比較這兩個 字符串是使用熟悉的 相等運算符 - 如果s等於等於萬噸。 然後我會繼續前進,打印 出“你鍵入同樣的事情! 否則,如果這不是真的,我只是 將輸入的printf(“你輸入的 不同的東西! 相當簡單 - 我只是比較對陣 噸,如果他們是平等的, 打印出一樣多。 讓我們來編譯並運行這個程序。 做比較0 /比較 0,想說什麼,你好, 說些什麼,你好。 不幸的是,該方案認為我已經 類型不同的東西,即使我 明確輸入“你好”的 同樣的方式兩次。 現在,為什麼會這樣呢? 嗯,事實證明,這一切 時間,字符串已經有點多 比字符序列複雜 引擎蓋下方。 在現實中,一個字符串是一個指針或 地址,特別是地址 在該第一個字符的 字符序列。 所以,當我們向T比較s 與同等等號,我們 其實是問,是這個地址 等於等於這個地址? 而這不會是這樣,如果 用戶在兩種不同的已鍵入 字符串和我們所謂的GetString兩次 讓他們,因為內存 該GetString的用於存儲所述第一 字符串可能這裡在RAM中,但 這GetString的用來存儲內存 第二個字符串是怎麼回事 在這裡在RAM中。 當然,那麼,這兩個大塊 內存有不同的地址 他們的第一個字符。 所以是S等於等於t? 嗯,沒有。 如果s和t都指向不同的 內存塊,因為他們將通過 調用GetString的兩倍,他們不是, 實際上,將是相同的。 因此它似乎是這樣的情況,以 在直觀比較兩個字符串 我們期待的方式,字符 字符,我們需要另一種技術 乾脆。